大数跨境
0
0

Spring中Aware接口实现原理解析

Spring中Aware接口实现原理解析 Spring全家桶实战案例
2021-09-22
0
导读:Spring中Aware接口实现原理解析

环境:Spring5.3.3 + Java8


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

使用示例:

@Componentpublic 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的底层原理了吧

完毕!!!

给个关注+转发呗谢谢


【声明】内容源于网络
0
0
Spring全家桶实战案例
Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
内容 832
粉丝 0
Spring全家桶实战案例 Java全栈开发,前端Vue2/3全家桶;Spring, SpringBoot 2/3, Spring Cloud各种实战案例及源码解读
总阅读285
粉丝0
内容832