Java Spring BeanDefinition getDestroyMethodName始终返回null
我正在尝试分析bean配置,并希望在特定情况下记录一些消息。我认为Java Spring BeanDefinition getDestroyMethodName始终返回null,java,spring,Java,Spring,我正在尝试分析bean配置,并希望在特定情况下记录一些消息。我认为BeanFactoryPostProcessor是合适的地方。但是,当我循环执行beanDefinitions并调用getDestroyMethodName或getInitMethodName时,它总是返回null 我通过@PostConstruct和@PreDestroy 我正在使用注释配置: @ComponentScan @Configuration public class SpringConfig { } 豆子: Bea
BeanFactoryPostProcessor
是合适的地方。但是,当我循环执行beanDefinitions
并调用getDestroyMethodName
或getInitMethodName
时,它总是返回null
我通过@PostConstruct
和@PreDestroy
我正在使用注释配置:
@ComponentScan
@Configuration
public class SpringConfig {
}
豆子:
BeanFactory后处理器:
@Component
public class LogAlertBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
AbstractBeanDefinition beanDefinition = null;
for (String beanDefinitionName : beanDefinitionNames) {
beanDefinition = (AbstractBeanDefinition) beanFactory.getBeanDefinition(beanDefinitionName);
//beanDefinition.getDestroyMethodName() always NULL!!!
if (beanDefinition.isPrototype() && beanDefinition.getDestroyMethodName() != null) {
System.out.println("Destroy method in \"" + beanDefinitionName + "\" bean won't be called!!!");
}
}
}
}
在任何情况下,方法getDestroyMethodName
或getInitMethodName
返回null,尽管调用了init和destroy方法。有人知道为什么会这样吗
@Component
public class LogAlertBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
AbstractBeanDefinition beanDefinition = null;
for (String beanDefinitionName : beanDefinitionNames) {
beanDefinition = (AbstractBeanDefinition) beanFactory.getBeanDefinition(beanDefinitionName);
//beanDefinition.getDestroyMethodName() always NULL!!!
if (beanDefinition.isPrototype() && beanDefinition.getDestroyMethodName() != null) {
System.out.println("Destroy method in \"" + beanDefinitionName + "\" bean won't be called!!!");
}
}
}
}