UML 图
接口的作用
从上面的 UML 图中,可以看到 ConfigurableApplicationContext
直接继承了 ApplicationContext
, Lifecycle
, Closeable
接口,所以 ApplicationContext 是 ApplicationContext 的子类。用过 Spring 或者看过 Spring 源码的,肯定都知道 ApplicationContext 这个接口。它的作用和名字一样,就是应用程序上下文(说明起一个好名字是多么重要),包含了程序上下文唯一 ID,应用程序名称等信息。
Lifecycle
接口则是负责对 context 的生命周期进行管理,提供了 start()
和 stop()
以及 isRunning()
方法。
Closeable
接口是 JDK 提供的接口,用于关闭组件,释放资源。
所以 ConfigurableApplicationContext
接口的作用就是设置上下文 ID,设置父应用上下文,添加监听器,刷新容器,关闭,判断是否活跃等方法。其实简单看一下 ApplicationContext 接口就会发现里面之后 get 方法,没有 set 方法,所以子接口就提供了 set 方法。