亿华智慧云亿华智慧云

Spring中Aware接口实现原理解析

环境:Spring5.3.3 + Java8

项目中如果某些Bean中需要使用如ApplicationContext,接口解析Environment,实现BeanFactory等对象时我们都会去实现相关的原理Aware接口对象,然后就可以直接使用对应的接口解析对象了,今天我们就来开始它的实现实现原理。

使用示例:

@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) ;     } } 

 入口函数:

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

正如上面这样只要你实现对应的原理*Aware接口就可以使用相应的免费源码下载接口对象了。

先来看看Aware接口的接口解析层级结构:

接着我们查看

AnnotationConfigApplicationContext的父类AbstractApplicationContext

在父类中,有如下方法:

上面选中的实现就是处理Aware相关接口类了。查看这类

class ApplicationContextAwareProcessor implements BeanPostProcessor 

该类是原理个Bean后处理器,云服务器提供商在bean实例化及依赖注入完成后、接口解析在任何初始化代码(比如配置文件中的实现init-method)调用之前调用和初始化代码调用之后调用

在初始化之前方法中先检查Bean是否是响应Aware接口的子类,如果不是原理直接返回;否则进入invokeAwareInterfaces方法

到这里你应该知道了Aware的底层原理了吧

完毕!!!

源码下载
赞(94)
未经允许不得转载:>亿华智慧云 » Spring中Aware接口实现原理解析