@Autowired和@Resource

@Autowire自动注入找bean

Autowired和Qualifier标签: 1.通过@Autowired标签可以让Spring自动的把属性需要的对象找出来,并注入给该属性。 2.第三方程序:Spring3.0之前,需要手动配置@Autowired解析注解程序,Spring就会自动的加入针对@Autowired标签的解析程序。从Spring3.0开始,可以不再需要改配置了。 <context:annotation-config /> 在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上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配则报错; 3)、可以通过使用@Qualifier("otherBean")标签来规定依赖对象按照bean的id+类型去找;

先根据类型找,找到后通过setter注入,如果找到多个再根据名字找,如果名字找不到,可以加上@Qualifier指定名字去找

@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去找,如果找不到,就不会再按照类型去找;

按名字找,找到用setter方法注入,找到不再按类型找,若找到多个类型则报错,再使用name指定名字

原文地址:https://www.cnblogs.com/Girlir/p/8911408.html