我已经学习了一段时间的Spring框架。但是每当我寻找初始化和销毁回调函数时,每个示例都使用ConfigurableApplicationContext而不是ApplicationContext。有人可以解释一下为什么吗?
因为所有常见的ApplicationContext实现实际上都是ConfigurableApplicationContext。从ConfigurableApplicationContext的javadoc中提取:
SPI接口,应由大多数(如果不是全部)应用程序上下文实现。
和
将配置和生命周期方法封装在此处,以避免它们对ApplicationContext客户端代码显而易见。这些方法只应由启动和关闭代码使用。
这意味着当你使用一个应用程序上下文时,即从中获取bean时,你仅将其用作ApplicationContext
,但当你管理其生命周期(初始化和销毁)时,你使用ConfigurableApplicationContext
中的方法。
ApplicationContext
: 这是最强大的容器,相较于Bean-factory(核心容器)而言。
ConfigurableApplicationContext
: ApplicationContext
容器的实现之一。此容器用于事件处理。
如果您的Bean类实现了以下方法并扩展了ApplicationListner
接口,则在执行这些方法时,您的Bean将获得相关的事件。
void refresh()
void close();
void shutdown();