偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Spring中Aware接口實現(xiàn)原理解析

開發(fā) 前端
項目中如果某些Bean中需要使用如ApplicationContext,Environment,BeanFactory等對象時我們都會去實現(xiàn)相關(guān)的Aware接口對象,然后就可以直接使用對應(yīng)的對象了,今天我們就來開始它的實現(xiàn)原理。

[[399408]]

環(huán)境:Spring5.3.3 + Java8

項目中如果某些Bean中需要使用如ApplicationContext,Environment,BeanFactory等對象時我們都會去實現(xiàn)相關(guān)的Aware接口對象,然后就可以直接使用對應(yīng)的對象了,今天我們就來開始它的實現(xiàn)原理。

使用示例:

  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.  

 入口函數(shù):

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

正如上面這樣只要你實現(xiàn)對應(yīng)的*Aware接口就可以使用相應(yīng)的接口對象了。

先來看看Aware接口的層級結(jié)構(gòu):

接著我們查看

AnnotationConfigApplicationContext的父類AbstractApplicationContext

在父類中,有如下方法:

上面選中的就是處理Aware相關(guān)接口類了。查看這類

  1. class ApplicationContextAwareProcessor implements BeanPostProcessor 

該類是個Bean后處理器,在bean實例化及依賴注入完成后、在任何初始化代碼(比如配置文件中的init-method)調(diào)用之前調(diào)用和初始化代碼調(diào)用之后調(diào)用

在初始化之前方法中先檢查Bean是否是響應(yīng)Aware接口的子類,如果不是直接返回;否則進(jìn)入invokeAwareInterfaces方法

到這里你應(yīng)該知道了Aware的底層原理了吧

完畢!!!

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2010-06-18 15:33:19

UML接口

2020-05-21 13:25:43

Spring組件架構(gòu)

2017-08-22 16:40:22

前端JavaScript接口

2010-07-08 10:28:51

UML接口

2024-06-27 08:26:10

LooperAndroid內(nèi)存

2023-02-28 09:07:18

ChatGPTAI

2020-09-22 12:00:23

Javahashmap高并發(fā)

2010-01-26 09:50:30

C++接口

2009-11-09 16:57:05

WCF托管特性

2021-07-05 07:51:43

JVM底層Python

2019-12-06 10:59:20

JavaScript運(yùn)行引擎

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-01-12 14:46:34

Kubernetes開發(fā)存儲

2023-12-26 08:08:02

Spring事務(wù)MySQL

2009-07-06 17:36:06

ResultSetJDBC Connec

2021-12-01 18:36:35

屬性

2023-08-11 07:44:40

TCP滑動窗口數(shù)據(jù)

2021-06-03 10:01:28

JDBCStatement接口

2021-05-21 10:01:01

JDBCJavaStatement接口

2021-06-22 10:24:22

Statement接口修改數(shù)據(jù)刪除數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號