spring 中的 destroy-method 和 destroy方法的区别是什么?

spring可以在在xml中配置 destroy-method 来指定销毁的方法
但是也也可以通过bean实现接口DisposableBean中的destroy方法来执行销毁的动作

请问这两种有什么区别?
而且是先执行destroy方法,后执行destroy-method执行的方法

为了弥补叙述的不清楚,我写了一个deamo方便理解问题描述

    <bean id="userService" class="cn.demo3.UserService" init-method="init" destroy-method="teardown">
        <property name="info" value="凤姐"/>
    </bean>
public class UserService implements InitializingBean,DisposableBean {
    public void destroy() throws Exception {
        System.out.println("1");
    }
    public void teardown(){
        System.out.println("2");
    }
}
阅读 8.6k
3 个回答

就是执行顺序的区别啊。
一个是编码式,一个是配置式的。
编码式就是在设计中就可以直接将init/destory包含至代码中,如果你很明确你的需求可以直接采用这个方式。配置式就是供外部选择了。

楼上正解,哈哈

16 年提问的。 不过稍微答一下,因为,跟我的理解的有偏差

  1. 实现 InitializingBean 接口,与 init-method 是 2 个不同的东西。
  2. 实现 DisposableBean 接口,与 destroy 个不同的东西。
  3. 在 spring bean 生命周期中, InitializingBean 比 init-method 早执行。 DisposableBean 比 destroy 早执行
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题