Spring:使用spring的lifecyle回调'destroy-method'比使用常规的finalize()方法有什么好处吗?

Rai*_*han 3 java spring

我知道init-method当你需要根据IoC框架注入的依赖关系进行初始化时,spring的生命周期回调非常有用,而这些依赖关系是在常规contructor方法中无法完成的.但是,与destroy-method常规finalize方法相比,在生命周期回调中进行清理有什么好处?

Joh*_*erg 7

finalize由垃圾收集器调用,因此不保证被调用.

当弹簧容器正在销毁bean时,容器会调用弹簧destroy-method@PreDestroy注释,例如,在应用程序关闭时,允许您取消注册服务,终止线程或执行各种清理代码.


Dav*_*ton 5

destroy-method有更多的事情要做,当bean的管理豆破坏容器被销毁.finalize()实际上,它适用于JVM,并不直接与Spring的生命周期管理相关联.

IMO Spring管理的bean应该更喜欢destroy-method保持交流(更明显,因为它已明确说明)并确保在更多控制的情况下发生破坏.