ConfigurableApplicationContext
转自:https://blog.csdn.net/weixin_39165515/article/details/77169231
此接口结合了所有ApplicationContext需要实现的接口。因此大多数的ApplicationContext都要实现此接口。它在ApplicationContext的基础上增加了一系列配置应用上下文的功能。配置应用上下文和控制应用上下文生命周期的方法在此接口中被封装起来,以免客户端程序直接使用。
public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable {
/**
* 应用上下文配置时,这些符号用于分割多个配置路径
*/
String CONFIG_LOCATION_DELIMITERS = ",; \t\n";
/**
* BeanFactory中,ConversionService类所对应的bean的名字。如果没有此类的实例的话
* 则使用默认的转换规则
*/
String CONVERSION_SERVICE_BEAN_NAME = "conversionService";
/**
* LoadTimeWaver类所对应的Bean在容器中的名字。如果提供了该实例,上下文会使用临时的ClassLoader
* 这样,LoadTimeWaver就可以使用bean确切的类型了
*/
String LOAD_TIME_WEAVER_BEAN_NAME = "loadTimeWeaver";
/**
* Environment类在容器中实例的名字
*/
String ENVIRONMENT_BEAN_NAME = "environment";
/**
* System系统变量在容器中对应的Bean的名字
*/
String SYSTEM_PROPERTIES_BEAN_NAME = "systemProperties";
/**
* System 环境变量在容器中对应的Bean的名字
*/
String SYSTEM_ENVIRONMENT_BEAN_NAME = "systemEnvironment";
/**
* 设置容器的唯一ID
*/
void setId(String id);
/**
* 设置此容器的父容器
* 需要注意的是,父容器一经设定就不应该修改。并且一般不会在构造方法中对其进行配置,因为很多时候。
* 其父容器还不可用。比如WebApplicationContext。
*/
void setParent(ApplicationContext parent);
/**
* 设置容器的Environment变量
*/
void setEnvironment(ConfigurableEnvironment environment);
/**
* 以COnfigurableEnvironment的形式返回此容器的环境变量。以使用户更好的进行配置
*/
@Override
ConfigurableEnvironment getEnvironment();
/**
* 此方法一般在读取应用上下文配置的时候调用,用以向此容器中增加BeanFactoryPostProcessor。
* 增加的Processor会在容器refresh的时候使用。
*/
void addBeanFactoryPostProcessor(BeanFactoryPostProcessor postProcessor);
/**
* 向容器增加一个ApplicationListener,增加的Listener用于发布上下文事件如refresh和shutdown等
* 需要注意的是,如果此上下文还没有启动,那么在此注册的Listener将会在上下文refresh的时候,全部被调用
* 如果上下文已经是active状态的了,就会在multicaster中使用
*/
void addApplicationListener(ApplicationListener<?> listener);
/**
* 向容器中注入给定的Protocol resolver,允许多个实例同时存在。
* 在此注册的每一个resolver都将会在上下的标准解析规则之前使用。因此,某种程度上来说
* 这里注册的resolver可以覆盖上下文的resolver
*/
void addProtocolResolver(ProtocolResolver resolver);
/**
* 加载资源配置文件(XML、properties,Whatever)。
* 由于此方法是一个初始化方法,因此如果调用此方法失败的情况下,要将其已经创建的Bean销毁。
* 换句话说,调用此方法以后,要么所有的Bean都实例化好了,要么就一个都没有实例化
*/
void refresh() throws BeansException, IllegalStateException;
/**
* 向JVM注册一个回调函数,用以在JVM关闭时,销毁此应用上下文。
*/
void registerShutdownHook();
/**
* 关闭此应用上下文,释放其所占有的所有资源和锁。并销毁其所有创建好的singleton Beans
* 实现的时候,此方法不应该调用其父上下文的close方法,因为其父上下文具有自己独立的生命周期
* 多次调用此方法,除了第一次,后面的调用应该被忽略。
*/
@Override
void close();
/**
* 检测此FactoryBean是否被启动过。
*/
boolean isActive();
/**
* 返回此应用上下文的容器。
* 千万不要使用此方法来对BeanFactory生成的Bean做后置处理,因为单例Bean在此之前已经生成。
* 这种情况下应该使用BeanFactoryPostProcessor来在Bean生成之前对其进行处理。
* 通常情况下,内容容器只有在上下文是激活的情况下才能使用。因此,在使用此方法前,可以调用
* isActive来判断容器是如可用
*/
ConfigurableListableBeanFactory getBeanFactory() throws IllegalStateException;
}
ConfigurableApplicationContext的更多相关文章
- The type org.springframework.context.ConfigurableApplicationContext cannot be resolved.
The type org.springframework.context.ConfigurableApplicationContext cannot be resolved. eclipse导入mav ...
- The type org.springframework.context.ConfigurableApplicationContext cannot be resolved问题解决
在搭建maven项目的时候,有时候会报这样的问题. The type org.springframework.context.ConfigurableApplicationContext cannot ...
- Spring源码解析之ConfigurableApplicationContext
UML图 接口的作用 从上面的UML图中,可以看到 ConfigurableApplicationContext 直接继承了 ApplicationContext, Lifecycle, Closea ...
- Cannot access org.springframework.context.ConfigurableApplicationContext
Cannot access org.springframework.context.ConfigurableApplicationContext 需要将有问题的模块 删除 后重新导入 即可 IDEA ...
- springIOC源码接口分析(十一):ConfigurableApplicationContext
一 实现接口 关系图: ConfigurableApplicationContext接口实现了三个接口,ApplicationContext, Lifecycle, Closeable, Applic ...
- 深入分析Spring 与 Spring MVC容器
1 Spring MVC WEB配置 Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext, ...
- spring源码分析之<context:component-scan/>vs<annotation-config/>
1.<context:annotation-config/> xsd中说明: <xsd:element name="annotation-config"> ...
- spring mvc DispatcherServlet详解之前传---FrameworkServlet
做项目时碰到Controller不能使用aop进行拦截,从网上搜索得知:使用spring mvc 启动了两个context:applicationContext 和WebapplicationCont ...
- mybatis笔记3 一些原理的理解
1,mybatis流程跟踪,原理理解 基本思路: 从SqlSessionFactory的初始化出发,观察资源的准备和环境的准备,以及实现持久层的一些过程: 进入SqlSessionFactoryBea ...
随机推荐
- 动态绑定v-model
<template> <div class="pieAll" > <template v-for="(item, index) in tes ...
- pod installation failed with react native 0.44
今天在集成react-native-sqlite-storage组件CocoaPods的时候遇到以下错误,这里记录一下错误解决方法: 报错如下: 以为是我Cocoapods的版本问题,于是更新版本: ...
- SpringBoot: 6.文件上传(转)
1.编写页面uploadFile.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- 【Linux】配置SSH免密登录
环境说明 假设我们有三台机器分别为bigdata111,bigdata112,bigdata113,三台机器均为centos 7系统. 配置SSH免密登录 (1)利用Xshell的发送键输入到所有会话 ...
- 【Java】生成随机的手机号码并输出到文件
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.R ...
- VMware虚拟机桥接方式与真实主机共享上网
原始出处 .http://meiling.blog.51cto.com/6220221/1367695 一.先介绍一下VMware网络设置的三种方式: VMWare提供了三种工作模式,host-onl ...
- Docker参数 -i -t 的作用
Docker 参数 -i -t 的作用通常的解释是: -t让docker分配一个伪终端并绑定到容器的标准输入上, -i则让容器的标准输入保持打开. 问题所以通常都是这样的: sudo docker r ...
- liunx基本操作命令
1. rm 删除命令 rm -i 文件名-----------询问y/N 删除文件 rm -f 文件名-----------直接删除文件 rm -r 目录 rm 文件名 rm ...
- LCA cogs 2450 2048 1588
t1 2450距离 链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vSNNNVqga [题目描述] 在一个村子里有N个房子,一些双向的路连接 ...
- 剑指offer_斐波那契数列
package solution; public class Fibonacci { /* * f(n) = f(n-1) + f(n-2) n>1 * f(0) = 0 * f(1) = 1 ...