@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;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)