IT科技

Spring中Aware接口实现原理解析

时间:2010-12-5 17:23:32  作者:系统运维   来源:系统运维  查看:  评论:0
内容摘要:环境:Spring5.3.3 + Java8项目中如果某些Bean中需要使用如ApplicationContext,Environment,BeanFactory等对象时我们都会去实现相关的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的底层原理了吧

完毕!!!

源码库
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap