Spring基于注解的配置:@Autowired和@Resource全面辨析+例子

2023-05-16

注入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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring基于注解的配置:@Autowired和@Resource全面辨析+例子 的相关文章

随机推荐