我刚才注意到,在Spring中,registerShutdownHook
等方法仅在AbstractApplicationContext
中定义,而不是在ApplicationContext
中定义。
我检查过,ApplicationContext不是从AbstractApplicationContext
继承的,我想知道为什么?
答案 0 :(得分:0)
registerShudownHook
在AbstractApplicationContext
上定义,这是一个模板方法实现,您只定义功能的某些部分(其余部分用作默认值)。
AbstractApplicationContext
是ApplicatoinContext的一个实现,而不是相反,所以你引用的方法不能从声明为ApplicationContext
的字段中获取。
此方法实际上来自实现最初定义的ConfigurableApplicationContext
。
举例说明:
AbstractApplicatoinContext
^
| implements
|
ConfigurableApplicationContext(这是定义方法的地方)
^
| extends
|
AppliationContext