Spring中Aware接口实现原理解析

前端 2023-07-05 17:29:38
54阅读

自然环境:Spring5.3.3 Java8

新项目中假如一些Bean中必须应用如ApplicationContext,Environment,BeanFactory等目标时大家都是会去完成有关的Aware插口目标,随后就可以立即应用相匹配的目标了,今日大家就来逐渐它的完成基本原理。

应用实例:

 
  1. @Component 
  2. public class BeanAware implements ApplicationContextAware { 
  3.  
  4.     private ApplicationContext ctx ; 
  5.      
  6.     @Override 
  7.     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
  8.         this.ctx = applicationContext ; 
  9.         System.out.println(this.ctx) ; 
  10.     } 
  11.  

通道涵数:

 
  1. public static void main(String[] args) { 
  2.         AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("com.pack") ; 
  3.         ctx.getBean(BeanAware.class) ; 
  4.         ctx.close(); 
  5.     } 

如同上边那样如果你完成相匹配的*Aware插口就可以应用相对应的插口目标了。

先讨论一下Aware插口的等级构造:

然后大家查询

AnnotationConfigApplicationContext的父类AbstractApplicationContext

在父类中,有以下方式:

上边选定的便是解决Aware有关接口类了。查询这类

 
  1. class ApplicationContextAwareProcessor implements BeanPostProcessor 

此类是个Bean后CPU,在bean创建对象及依赖注入进行后、在一切复位编码(例如环境变量中的init-method)启用以前启用和复位编码启用以后启用

在复位以前方式中先查验Bean是不是回应Aware插口的派生类,要不是立即回到;不然进到invokeAwareInterfaces方式

到这儿你应该知道了Aware的最底层基本原理了吧

结束!!!

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。