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

2022-09-01 05:38:18

我有自己的豆子:

@Bean
public MyBean myBean(){...

在春季文档发布自己的资源之后,我应该指定。我没有找到任何由spring调用的默认销毁方法,以防万一没有直接指定。destroyMethoddestroyMethod

我用过

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

但是考虑一下,如果默认情况下它具有值,则是否可以不直接指定销毁方法。


春天是否默认尝试一些像, , ?如果spring默认尝试一些方法来释放资源 - 哪些?destroycloserelease


答案 1

Bean.destroyMethod中所述

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

换句话说,如果您没有指定 ,但 Bean 具有公共或方法,它将自动用作销毁方法。destroyMethodclose()shutdown()

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


答案 2

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

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

推荐