Spring
1. 介绍
之前我们写的bean都是基于xml配置,而这文章是基于java 注解去实现创建bean,首先我们需要在之前的xml当中添加两个dtd
xmlns:context 和 xsi:schemaLocation
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> </beans>
2.配置
只要对你需要添加注解创建bean的包进行扫描就可以了
<context:component-scan> 其中属性,base-package就写需要扫描的包全限路径即可
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.test.spring.annotation"></context:component-scan> </beans>
3.注解讲解
-
创建基本bean: @Component, 以下三种类型跟Component一样,只是叫法不一样而已
- @Service
- @Controller
- @Repository
- 注入:三种不同的注入方式
- @Autowired:以类型注入,意思就注入相同类型的实现类,这会有缺点,就会当有多个实现了相同接口的对象,就不知道注入谁了
- @Autowired+@Qualifier: 就是制定那个实现bean注入
- @Resource: 已名称注入
-
- 第四种是可以在setter方法上使用以上三种注解
- 设普通值:@Value
完整类
@Component("userService") public class UserServiceImpl implements UserService{ /** * 第一种方式 注入 */ @Autowired private UserDao userDao_1; /** * 第二种方式 注入 */ @Autowired @Qualifier("userDao") private UserDao userDao_2; /** * 第三种方式 注入 */ @Resource("userDao") private UserDao userDao_3; private UserDao userDao_4; /** * 第四种方式 注入 */ @Autowired @Qualifier("userDao") public void setUserDao_4(UserDao userDao_4) { this.userDao_4 = userDao_4; } /** * 基本类型 */ @Value("Peter") public String name; public void addUser() { userDao_1.saveUser(); userDao_2.saveUser(); userDao_3.saveUser(); userDao_4.saveUser(); } public String toString() { return name; } }