AbstractApplicationContext
和ApplicationContext
之间有什么区别?
我们可以打电话吗
context.registerShutdownHook()
使用ApplicationContext
?
我在浏览示例代码时看到了这一点 -
public static void main(String[] args) {
AbstractApplicationContext context =new ClassPathXmlApplicationContext("Beans.xml");
context.registerShutdownHook();
}
答案 0 :(得分:13)
与抽象类(AbstractApplicationContext)和接口(ApplicationContext)之间的差异相同。
我们可以使用ApplicationContext调用context.registerShutdownHook()吗?
不,因为registerShutdownHook()
是ConfigurableApplicationContext
界面的一部分,未被ApplicationContext
扩展
答案 1 :(得分:7)
registerShutdownHook()正常关闭bean和preforms终结,就像调用destroy方法一样。这是在ConfigurableApplicationContext接口中声明的方法,它由AbstractApplicationContext实现,并且它不是由ApplicationContext实现的。所以registerShutdownHook()的调用只能来自AbstractApplicationContext的对象
答案 2 :(得分:1)
registerShutdownHook()不是ApplicationContext的一部分。所以,我们不能使用Application上下文。
可以使用ConfigurableApplicationContext或AbstractApplicationContext使用引用来调用此方法。
可以从具有实现的接口或类调用方法。因为,我们实际上使用AbstractApplicationContext的引用为ClassPathXmlApplicationContext创建了对象。
差异: ConfigurableApplicationContext是一个接口,其中的方法在AbstractApplicationContext类中实现。