- 在Spring Boot中 ConfigurableApplicationContext 继承了 ApplicationContext 和 Lifecyle 、Closeable接口
- ApplicationContext是Spring中的应用上下文
- Lifecycle 接口则是负责对 context 的生命周期进行管理,提供了 start() 和 stop() 以及 isRunning() 方法。
- Closeable 接口是JDK提供的接口,用于关闭组件,释放资源。
- 所以 ConfigurableApplicationContext 接口的作用就是设置上下文 ID,设置父应用上下文,添加监听器,刷新容器,关闭,判断是否活跃等方法
方法 |
说明 |
getBean() |
获取容器中的bean对象 |
getBeanFactory() |
返回此应用上下文的容器 |
getBeanDefinitionNames() |
获取所有容器中的bean对象 |
getBeanDefinitionCount() |
获取所有容器中的bean对象数量 |
setId() |
设置容器的唯一ID |
setParent() |
设置此容器的父容器,父容器一经设定就不应该修改,一般不对父容器修改 |
setEnvironment() |
设置容器的Environment变量 |
getEnvironment() |
以ConfigurableEnvironment的形式返回此容器的环境变量。以使用户更好的进行配置 |
addBeanFactoryPostProcessor() |
向此容器中增加BeanFactoryPostProcessor,增加的Processor会在容器refresh的时候使用 |
addApplicationListener() |
向容器增加一个ApplicationListener,增加的Listener用于发布上下文事件如refresh和shutdown等 需要注意的是,如果此上下文还没有启动,那么在此注册的Listener将会在上下文refresh的时候,全部被调用 如果上下文已经是active状态的了,就会在multicaster中使用 |
addProtocolResolver() |
向容器中注入给定的Protocol resolver,允许多个实例同时存在 在此注册的每一个resolver都将会在上下的标准解析规则之前使用。 |
refresh() |
加载资源配置文件(XML、properties,Whatever) 由于此方法是一个初始化方法,因此如果调用此方法失败的情况下,要将其已经创建的Bean销毁 |
registerShutdownHook() |
向JVM注册一个回调函数,用以在JVM关闭时,销毁此应用上下文 |
close() |
关闭此应用上下文,释放其所占有的所有资源和锁。并销毁其所有创建好的singleton Beans 实现的时候,此方法不应该调用其父上下文的close方法,因为其父上下文具有自己独立的生命周期 |
isActive() |
检测此FactoryBean是否被启动过 |
示例
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);
User user=run.getBean(User.class);
System.out.println(user);
}
}