Java Spring BeanDefinition getDestroyMethodName始终返回null

Java Spring BeanDefinition getDestroyMethodName始终返回null,java,spring,Java,Spring,我正在尝试分析bean配置,并希望在特定情况下记录一些消息。我认为BeanFactoryPostProcessor是合适的地方。但是,当我循环执行beanDefinitions并调用getDestroyMethodName或getInitMethodName时,它总是返回null 我通过@PostConstruct和@PreDestroy 我正在使用注释配置: @ComponentScan @Configuration public class SpringConfig { } 豆子: Bea

我正在尝试分析bean配置,并希望在特定情况下记录一些消息。我认为
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!!!");
          }
      }
   }
}