ApplicationContextAware
实现与应用。
ApplicationContext
Spring
容器是生成Bean实例的工厂,并管理容器中的 Bean
。生活中我们一般会把生产产品的地方称为工厂,而在这里 bean
对象的地方官方取名为 BeanFactory
,直译 Bean
工厂(com.springframework.beans.factory.BeanFactory
),我们一般称 BeanFactory
为 IoC
容器,而称 ApplicationContext
为应用上下文。
BeanFactory
提供了 OC
容器最基本的形式,给具体的IOC容器的实现提供了规范,BeanFactory
负责配置、创建、管理 Bean
等基本功能
ApplicationContext
的中文意思是“应用前后关系”,它继承自 BeanFactory
接口,除了包含 BeanFactory
的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,被推荐为 Java EE
应用之首选,可应用在 Java APP
与 Java Web
中。
ApplicationContextAware
实现 ApplicationContextAware
接口之后,系统启动时就可以自动给我们的服务注入 applicationContext
对象(自动调用了接口中的 setApplicationContext
方法),我们就可以获取到 ApplicationContext
里的所有信息了。
ps: 在 Spring
框架中,如果一个类实现了 org.springframework.context.ApplicationContextAware
接口,那么 Spring
容器在实例化这个类的时候会自动调用其 setApplicationContext
方法,从而将 Spring
的 ApplicationContext
对象传递给该类,以便在类中访问应用程序上下文中的 bean
。
当 Spring
容器检测到一个类实现了这个接口,它会在实例化该类之后,调用 setApplicationContext
方法,将应用程序上下文作为参数传递给这个方法。
这个机制允许你在 Spring
托管的组件中获得对 Spring
容器的引用,从而可以访问和操作容器中的其他 bean
。这在某些情况下非常有用,例如,你可能需要在自定义组件中访问其他 bean,或者对应用程序上下文进行一些特定的操作。
总之,Spring
通过自动调用 setApplicationContext
方法,允许你方便地获取对应用程序上下文的引用。这是 Spring IoC
(控制反转)和依赖注入的一个示例,它使得你的组件能够以松散耦合的方式与 Spring 容器协作。
注意:实现ApplicationContextAware
接口的类需要交给spring
管理,使用 @Component
或者在配置文件声明 bean
我们获取 ApplicationContext
,一般是用来获取 bean
的,ApplicationContext
有一个 getBean
方法,此方法继承自 BeanFactory
1 | T getBean(Class requiredType) throws BeansException; |
代码实现
1 | package com.cbi.rpmc.bean; |
使用场景
如果我们在 spring boot
中直接 new
出来的话,是进不了 IOC
里面的,但是,通过上面进行获取的是 IOC
里面的实例。
具体可以看