Spring中Aware接口实现原理解析

导读:本篇文章讲解 Spring中Aware接口实现原理解析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

环境: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();
	}

Spring中Aware接口实现原理解析

 

正如上面这样只要你实现对应的*Aware接口就可以使用相应的接口对象了。

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

Spring中Aware接口实现原理解析

 

接着我们查看AnnotationConfigApplicationContext的父类AbstractApplicationContext

在父类中,有如下方法:

Spring中Aware接口实现原理解析

 

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

class ApplicationContextAwareProcessor implements BeanPostProcessor

该类是个Bean后处理器,在bean实例化及依赖注入完成后、在任何初始化代码(比如配置文件中的init-method)调用之前调用和初始化代码调用之后调用

Spring中Aware接口实现原理解析

 

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

Spring中Aware接口实现原理解析

 

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

完毕!!!

给个关注+转发呗谢谢

Spring中Aware接口实现原理解析

 

Spring中Aware接口实现原理解析

 

Spring中Aware接口实现原理解析

 

Spring中Aware接口实现原理解析

Spring中Aware接口实现原理解析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80041.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!