Spring init-method和destroy-method

时间:2015-10-01 13:23:06

标签: java spring

在分别定义与java <init>和finalize()方法相同的bean时,是否发出了IOC init-method和destroy-met? 如果是这样,那么像垃圾收集器调用finalize()方法一样,是由GC调用的属性destroy-method中指定的方法吗? destroy-method属性中的方法是什么时候调用?

2 个答案:

答案 0 :(得分:1)

它们不与垃圾收集器或任何JVM生命周期链接,而是与容器相关联。例如,在设置instanciation和属性后将调用init-method。另一个是destroy-method,当你关闭上下文时会调用它。

答案 1 :(得分:1)

不,它不等待GC,而是明确决定停止弹簧环境。例如,如果程序员显式调用FactoryBean.destroySingletons(),或者通过调用registerShutdownHook()隐式调用,这意味着系统会发生破坏。退出。

如果你没有看到你所使用的shutdonw方法,那可能是因为你刚刚允许“主要”方法。线程完成而不明确地破坏上下文。如果是(比方说)ClasspathXmlApplicationContext,请尝试前面提到的registerShutdownHook

BTW注意它只适用于单例范围的bean(默认情况下,最常用的类型)