文章目录
- 1. 简介
- 2. 作用
- 3. 使用
- 3.1 创建并实现接口
- 3.2 配置 Bean 信息
- 3.3 创建启动类
- 3.4 启动
- 4. 应用场景
- 总结
Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。ApplicationContextAware
接口是其中之一,它允许 Bean 获取对 ApplicationContext 的引用。本文将介绍 ApplicationContextAware
接口的作用、使用方式,以及在实际应用中的常见场景。
1. 简介
ApplicationContextAware
是一个回调接口,用于在 Spring 容器实例化 Bean 后,将容器的上下文(ApplicationContext)传递给实现了该接口的 Bean。通过这个接口,Bean 可以获得对 Spring 容器的引用,从而获取容器中的其他 Bean 和资源。
源码如下
2. 作用
ApplicationContextAware
主要用于
-
获取 ApplicationContext
允许 Bean 在运行时获取对 Spring 容器的引用。
-
与容器交互
Bean 可以通过 ApplicationContext 与容器进行交互,例如获取其他 Bean 的引用、获取环境变量等。
3. 使用
要使用 ApplicationContextAware
接口,需要按以下步骤进行:
3.1 创建并实现接口
package org.example.cheney;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class DemoBean implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
public void displayBeanNames() {
// 打印 Bean 的名称
String[] beanNames = applicationContext.getBeanDefinitionNames();
System.out.println("【ApplicationContextAware】ApplicationContext 容器内存在的 Bean 的名字是:");
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
}
3.2 配置 Bean 信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
>
<bean id="demoBean" class="org.example.cheney.DemoBean"/>
</beans>
3.3 创建启动类
package org.example.cheney;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) throws Exception {
String location = "applicationContext.xml";
try (AbstractXmlApplicationContext context = new ClassPathXmlApplicationContext(location)) {
DemoBean demoBean = (DemoBean) context.getBean("demoBean");
demoBean.displayBeanNames();
System.out.println("End.");
}
}
}
3.4 启动
输出结果:
4. 应用场景
ApplicationContextAware
接口通常用于以下场景
-
获取其他 Bean 的引用:
当一个 Bean 需要与容器中的其他 Bean 进行交互时,可以使用
ApplicationContext
获取其他 Bean 的引用。 -
获取环境变量:
Bean 可以通过
ApplicationContext
获取容器的环境变量,例如配置文件中的属性值。
总结
Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。通过实现 ApplicationContextAware
接口,Spring 提供了一种便捷的方式让 Bean 获取对 Spring 容器的引用。这使得 Bean 可以在运行时与容器进行交互,获取其他 Bean 的引用、获取环境变量等。