04_自动装配(注解方式)

在Spring中完成注解的自动装配操作:

方式一:使用Spring自带的标签(Autowired和Qualifier标签).
方式二:使用JavaEE自带的标签(Resource标签):
Autowired和Qualifier标签:

1.通过@Autowired标签可以让Spring自动的把属性需要的对象找出来,并注入给该属性。
2.第三方程序:Spring3.0之前,需要手动配置@Autowired解析注解程序,Spring就会自动的加入针对@Autowired标签的解析程序。从Spring3.0开始,可以不再需要改配置了。在Web开发中必须手动配置.

3.@Autowired标签贴在字段或者setter方法上。
4.@Autowired可以同时为一个属性注入多个对象。
public void setXxx(OtherBean1 other1,OtherBean2 other2) {}
5.使用@Autowired标签可以注入Spring内置的重要对象,比如BeanFactory,ApplicationContext。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SpringTest {
@Autowired
 private ApplicationContext ctx;
}

6.默认情况下@Autowired标签必须要能找到对应的对象,否则报错。不过,可使用required=false来避免该问题:
@Autowired(required=false)
7.@Autowired找bean的方式:

1)、首先按照依赖对象的类型找,如果找到则使用setter方法或者字段直接注入;
2)、如果在Spring上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配则报错(bean不唯一错误);
3)、可以通过使用@Qualifier("otherBean")标签来规定依赖对象按照bean的id+类型去找;

@Resource标签:
1,@Resource标签是JavaEE规范的标签;
2,@Resource标签也可以作用于字段或者setter方法;
3,也可以使用@Resource标签注入一些spring内置的重要对象,比如BeanFactory.ApplicationContext;
4,@Resource必须要求有匹配的对象;
5,context:annotation-config既引入了@Autowired标签的解析器,也引入了@Resource的解析器;
6,@Resource标签找bean的方式:
1),首先按照名字去找,如果找到,就使用setter或者字段注入;
2),如果按照名字找不到,再按照类型去找,但如果找到多个匹配类型,报错;
3),可以直接使用name属性指定bean的名称;但是,如果指定的name,就只能按照name去找,如果找不到,就不会再按照类型去找;

@Autowired VS @Resource:

1,@Autowired:是Spring定义的标签,所以可能不太稳定,并且对象和spring框架关联;
2,@Resouce:是J2EE的规范,所以稳定,在J2EE规范容器中也能正常使用;

你可能感兴趣的:(spring)