spring5.x版本 java配置和annotation配置说明

本文介绍了Spring5.x中如何使用Java配置和Annotation替代XML配置。通过示例展示了如何使用@Repository、@Service注解配置DAO和业务类,并且探讨了不加@Service注解仍能运行成功的情况。此外,提到了Spring提供的@Component、@Controller、@Service、@Repository等四种配置bean的注解,并计划在后续使用中进一步探讨它们的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java配置

@Configuration //这个注解的意思是相当于把此类当作一个xml文件
public class AppConfig {
	
	@Bean(name="userService")  //这个注解相当于xml文件里的<bean> 
	public UserService userService() {
		UserService service = new UserService();
		service.setUserDAO(userDAOIml());
		return service;
	}
	
	@Bean
	public UserDAOIml userDAOIml() {
		return new UserDAOIml();
	}
	
}
public class UserServiceTest {

	@Test
	public void testAdd() {
		ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
//		UserService service = (UserService)context.getBean(UserService.class);
		UserService service = (UserService)context.getBean("userService");
		User user = new User();
		user.setName("xxx");
		user.setPassword("123456");
		service.add(user);
	}

}

这样就不需要XML文件了。直接用类名或者Bean名都可以获取。

Annotation配置

首先XML配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

<!-- 	开启annotation配置 -->
    <context:annotation-config/>
<!--    扫描以com开头的包里边的bean -->
    <context:component-scan base-package="com"/>
    

</beans>

接着用@Repository配置这两个实现同一个接口的DAO。

@Repository
public class UserDAOIml implements UserDAO {
	@Override
	public void save(User user) {
		// TODO Auto-generated method stub
		System.out.println("UserDAOIml: -----save a user");
	}
}


@Repository
public class UserDAOIml2 implements UserDAO {
	@Override
	public void save(User user) {
		// TODO Auto-generated method stub
		System.out.println("UserDAOIml2: -----save a user");
	}
}

接下来配置调用的类

@Service
public class UserService {
	@Autowired
	@Qualifier("userDAOIml2")   //如果没有这句就会报错,Spring不知道该注入哪个实现类
	private UserDAO userDAO;

	public UserService() {
		// TODO Auto-generated constructor stub
		System.out.println("初始化");
	}
	
	public UserDAO getUserDAO() {
		return userDAO;
	}
	
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
	public void add(User user) {
		userDAO.save(user);
	}
}

试过不加@Service也能运行成功,暂时不知道啥情况

调用方法

	@Test
	public void testAdd() {
		ApplicationContext context = new ClassPathXmlApplicationContext("benasAnnotation.xml");	
		UserService service = (UserService)context.getBean(UserService.class);
		User user = new User();
		user.setName("xxx");
		user.setPassword("123456");
		service.add(user);
	}

}

Spring提供四种配置bean的注解。目前测试暂时效果都一样的

@Component      @Controller    @Service        @Repository   回头用的时候再补充吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值