新聞中心
環(huán)境:Spring5.3.3 + Java8

專注于為中小企業(yè)提供成都網(wǎng)站設計、成都做網(wǎng)站、外貿網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)新豐免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。
項目中如果某些Bean中需要使用如ApplicationContext,Environment,BeanFactory等對象時我們都會去實現(xiàn)相關的Aware接口對象,然后就可以直接使用對應的對象了,今天我們就來開始它的實現(xiàn)原理。
使用示例:
- @Component
- public class BeanAware implements ApplicationContextAware {
- private ApplicationContext ctx ;
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- this.ctx = applicationContext ;
- System.out.println(this.ctx) ;
- }
- }
入口函數(shù):
- public static void main(String[] args) {
- AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("com.pack") ;
- ctx.getBean(BeanAware.class) ;
- ctx.close();
- }
正如上面這樣只要你實現(xiàn)對應的*Aware接口就可以使用相應的接口對象了。
先來看看Aware接口的層級結構:
接著我們查看
AnnotationConfigApplicationContext的父類AbstractApplicationContext
在父類中,有如下方法:
上面選中的就是處理Aware相關接口類了。查看這類
- class ApplicationContextAwareProcessor implements BeanPostProcessor
該類是個Bean后處理器,在bean實例化及依賴注入完成后、在任何初始化代碼(比如配置文件中的init-method)調用之前調用和初始化代碼調用之后調用
在初始化之前方法中先檢查Bean是否是響應Aware接口的子類,如果不是直接返回;否則進入invokeAwareInterfaces方法
到這里你應該知道了Aware的底層原理了吧
完畢!!!
網(wǎng)站欄目:Spring中Aware接口實現(xiàn)原理解析
標題路徑:http://m.fisionsoft.com.cn/article/dpisojp.html


咨詢
建站咨詢
