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 ...
随机推荐
- weight权重的属性
权重是把屏幕剩余空间按比例分配 控件使用0dp,则实际的宽度比就等于权重比 控件wrap_content,那么权重越大,位置占的越多,再小不过wrap_content 控件match_parent,那 ...
- Python的并行求和例子
先上一个例子,这段代码是为了评估一个预测模型写的,详细评价说明在 https://www.kaggle.com/c/how-much-did-it-rain/details/evaluation, 它 ...
- echarts.js导致angular-translate加载模块失败
echarts.js导致angular-translate加载模块失败,待解决
- 《计算机系统要素》第四章 类汇编语言 Hack
这章通过学习书中自己设计的Hack语言的使用,弄懂汇编语言的工作原理. 汇编语言最接近底层了,因为每个指令对应一个二进制编码. 当这些指令都变成...0101011100101...的形式后,内存Me ...
- linux定时脚本:删除linux/HDFS上过期文件
一.定时删除linux上定时的文件 显示20分钟前的文件 -exec ls -l {} \; 删除20分钟前的文件 -exec rm {} \; 显示20天前的文件 -exec ls -l {} \; ...
- jenkins配置记录
jenkins配置记录 http://www.cnblogs.com/kevingrace/p/6022447.html
- Java泛型(7):无界通配符<?>
无界通配符<?>很容易和原生类型混淆. 以List为例: List表示持有任何Object类型的原生List,其实就等价于List<Object> List<?>表 ...
- Python multiprocess模块(中)
主要内容: 一. 锁 二. 信号量 三. 事件 通过event来完成红绿灯模型 四. 队列(重点) 队列实现进程间的通信 五. 生产者消费者模型 1. 初始版本(程序会阻塞住) 2. 升级版本一(通过 ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- ambari 快速安装部署
OS:Linux CPU消耗大,要准备5G以上,不然集群启动不了(我自己给它配了8G,启动整个集群是没问题,要用的话估计不够) 一.准备工作: 1.关闭防火墙:sudo ufw disable/ 2. ...