关于spring源码中的ignoreDependencyInterface方法

阅读spring源码时,纠结于以下这段代码,网上查询了一波,特意记录以下

ignoreDependencyInterface(BeanNameAware.class);
ignoreDependencyInterface(BeanFactoryAware.class);
ignoreDependencyInterface(BeanClassLoaderAware.class);

怎么理解这个操作呢?
照理说,如果A的B类型属性,不需要spring帮我们注入的话,我们可以不在B属性上加@Autowired或者@Resource注解。
但是,xml有个配置,default-autowire="byType",全局有效的,这时候A的属性B即使没有@Autowired或者@Resource注解,也会注入
此时如果A类中,又有setB的方法,且ignoreDependencyInterface(B.class); 则自动注入B,由setB方法来设置B
如果,没有setB方法,那还是会注入
所以ignoreDependencyInterface方法在真正作用是: 忽略该接口的实现类中和接口setter方法入参类型相同的依赖。
至于为什么要忽略,通过set方法来注入,暂时不太清楚

查询相关资料的链接:
https://www.jianshu.com/p/3c7e0608ff1f?from=singlemessage
https://blog.csdn.net/GoSaint/article/details/85010300

你可能感兴趣的:(关于spring源码中的ignoreDependencyInterface方法)