这不是特定于Spring Boot,而是标准的Spring行为。
默认情况下,Spring将推断bean的destroy方法。从javadoc中获取@Bean
:
为了方便用户,容器将尝试针对从该@Bean
方法返回的对象推断一个destroy 方法。例如,给定一个@Bean
返回Apache Commons DBCPBasicDataSource
的close()
方法,容器将注意到该对象上可用的方法并将其自动注册为destroyMethod
。目前,这种“销毁方法推论”仅限于仅检测名为“ close”或“ shutdown”的公共无参数方法。
Javadoc继续描述了如何禁用此行为:
要禁用特定的destroy方法推断@Bean
,请指定一个空字符串作为值,例如@Bean(destroyMethod="")
您需要更新您的dataSource()
方法:
@Bean(destroyMethod="")
public DataSource dataSource() {
return new JndiDataSourceLookup().getDataSource("com.datasource.CONSUMER");
}