为什么ContextAnnotationAutowireCandidateResolver会影响@Autowired和@Resource注解的加载顺寻?
时间: 2024-04-28 20:20:12 浏览: 238
(转)Spring中@Autowired注解和@Resource注解的区别
5星 · 资源好评率100%
ContextAnnotationAutowireCandidateResolver在Spring框架中的作用是为自动注入的属性选择合适的候选者。在选择候选者的过程中,它会考虑属性的注解、类型、名称和其他相关因素,以确定最终注入的属性。在这个过程中,ContextAnnotationAutowireCandidateResolver会影响@Autowired和@Resource注解的加载顺序。
具体来说,当一个bean中存在多个符合条件的候选者时,ContextAnnotationAutowireCandidateResolver会选择一个最合适的候选者进行自动注入。在选择候选者时,它会优先考虑使用@Autowired注解标注的属性,因为@Autowired注解是Spring框架中的原生注解,它的优先级比@Resource注解更高。如果某个属性上既有@Autowired注解,又有@Resource注解,那么ContextAnnotationAutowireCandidateResolver会优先考虑@Autowired注解,而忽略@Resource注解。
因此,如果在一个bean中同时使用@Autowired和@Resource注解来注入属性,并且使用了ContextAnnotationAutowireCandidateResolver作为AutowireCandidateResolver,那么@Autowired注解会优先于@Resource注解被处理。这就是ContextAnnotationAutowireCandidateResolver会影响@Autowired和@Resource注解的加载顺序的原因。
阅读全文