环境:Spring5.3.3 + Java8
专注于为中小企业提供成都网站设计、成都做网站、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业新丰免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
项目中如果某些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的底层原理了吧
完毕!!!
网站名称:Spring中Aware接口实现原理解析
转载来源:http://www.csdahua.cn/qtweb/news25/494125.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网