弹簧芯。默认@Bean 销毁方法

新手上路,请多包涵

我有自己的豆子:

 @Bean
public MyBean myBean(){...

按照 spring 文档发布自己的资源,我应该指定 destroyMethod 。如果未直接指定 destroyMethod ,我还没有发现 spring 调用的任何默认销毁方法。

我用了

@Bean(destroyMethod = "close")
public MyBean myBean(){...

但是考虑一下如果默认有值的话不直接指定destroy方法的可能性。


默认情况下,spring 会尝试像 destroycloserelease 这样的东西吗?如果 spring 默认尝试一些方法来释放资源——哪些方法?

原文由 Sergii 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 511
2 个回答

Bean.destroyMethod 中所述:

为了方便用户,容器将尝试针对从 @Bean 方法返回的对象推断销毁方法。例如,给定一个 @Bean 方法返回一个 Apache Commons DBCP BasicDataSource ,容器将注意到 close() 自动注册为该对象可用的方法 destroyMethod 。这种“销毁方法推断”目前仅限于检测名为“关闭”或“关闭”的公共、无参数方法。

换句话说,如果您没有指定 destroyMethod ,但该 bean 有一个公共的 close()shutdown() 方法,它将被自动用作 destroy-方法。

要禁用此推断,请使用 @Bean(destroyMethod = "")

原文由 Mark Rotteveel 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以实现一个将在销毁之前执行的方法,并用 @PreDestroy 对其进行注释

@PreDestroy
public void methodName() {
    //Your code..
}

原文由 kk. 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题