繁体   English   中英

Spring init-method 和 destroy-method

[英]Spring init-method and destroy-method

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

它们不与垃圾收集器或任何 JVM 生命周期相关联,而是与您的容器相关联。 例如 init-method 将在实例化和属性设置后被调用。 另一种,destroy-method 将在您关闭上下文时调用。

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

如果您没有看到调用了 shutdownw 方法,那可能是因为您只是允许“主”线程完成而不显式破坏上下文。 如果是(比如说) ClasspathXmlApplicationContext ,请尝试上述 registerShutdownHook

顺便说一句,请注意它仅适用于单例作用域 bean(这是默认的,也是最常用的类型)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM