我不确定如何理解:
destroyMethod
类型的Bean
方法。
它说:
为方便用户,容器将尝试针对从@Bean方法返回的对象推断出destroy方法。例如,给定一个返回Apache Commons DBCP BasicDataSource的@Bean方法,容器将注意到该对象上可用的close()方法并自动将其注册为destroyMethod。这种“破坏方法推理”目前仅限于检测名为“close”或“shutdown”的公共,非arg方法。
对于具有Bean({destroyMethod="close"})
方法的类型close()
和具有Bean({destroyMethod="shutdown"})
方法的类型shutdown()
,是否意味着destroyMethod="close"
是多余的,因为它们将始终自动推断?
如果是这样的话,那么destroyMethod="shutdown"
或display: table-cell;
的使用在所有情况下都是多余的。我是对的吗?
答案 0 :(得分:2)
您完全正确并且正确理解了文档!如果您想查看证据,请查看DisposableBeanAdapter:
private static final String CLOSE_METHOD_NAME = "close";
private static final String SHUTDOWN_METHOD_NAME = "shutdown";
和#hasDestroyMethod
:
public static boolean hasDestroyMethod(Object bean, RootBeanDefinition beanDefinition) {
...
if (AbstractBeanDefinition.INFER_METHOD.equals(destroyMethodName)) {
return (ClassUtils.hasMethod(bean.getClass(), CLOSE_METHOD_NAME) ||
ClassUtils.hasMethod(bean.getClass(), SHUTDOWN_METHOD_NAME));
}
...
}
如果您有兴趣,可以浏览框架的该区域。