注入Bean的注解
- @Autowired:Spring提供的注解。
- @Resource:JSR-250提供的注解。(属于J2EE)
辨析
1、@Autowired这个注解属于Spring,默认按照类型 配置。默认情况下要求依赖对象必须存在,如果允许为null值,可以给它的required属性为false值,这个和@Nullable这个注解比较类似。 一般都是结合@Qualifier注解一起使用🙋?♀?
@Autowired
@Qualifier(value = "dog2")
private Dog dog;
@Autowired(required=false)
private Cat cat;
@Autowried先通过bytype,如果发现相同类型的cat/dog(无所谓,总之就是有一样的类型),然后通过byName,发现了id=cat/dog,装配成功,如果没有id=cat,失败,然后再通过qualifier来指定
2、@Resource这个注解属于J2EE,默认按照名称进行装配,名称通过name属性进行指定。如果没有指定name属性 ,那么默认就按照取字段名 进行查找。如果说注解写在setter方法 上,那么就默认按照属性名 进行装配噢。当找不到与名称匹配的Bean时才按照类型进行匹配。如果name属性一旦指定 ,那么就只会按照name里面的名称 进行装配!
@Resource(name = "xxx")
private Cat xxx;
|