我一直在学习spring框架。但是每当我查找初始化和销毁回调时,每个示例都使用ConfigurableApplicationContext而不是ApplicationContext。有人可以解释原因吗?
答案 0 :(得分:6)
因为ApplicationContext的所有常见实现实际上都是ConfigurableApplicationContext。从ConfadoApplicationContext的javadoc中提取:
SPI接口由大多数应用程序上下文实现。
和
这里封装了配置和生命周期方法,以避免使它们对ApplicationContext客户端代码变得明显。本方法只能由启动和关闭代码
使用这意味着,当您使用应用程序上下文时,即从中获取bean时,您只能将其用作ApplicationContext
,但是当您管理其生命周期(初始化和销毁)时,您使用它来自ConfigurableApplicationContext
答案 1 :(得分:0)
ApplicationContext
:与Bean工厂(核心容器)相比,这是功能最强大的容器。
ConfigurableApplicationContext
:ApplicationContext
容器的一种实现。此容器用于事件处理建议。
如果实现以下方法,并且Bean类扩展了ApplicationListner
接口,则在执行这些方法时,您的Bean将获得相关的事件。
void refresh()
void close();
void shutdown();