【问题标题】:Can Spring init Bean(Factory)PostProcessor lazily?Spring 可以懒惰地初始化 Bean(Factory)PostProcessor 吗?
【发布时间】:2018-11-12 17:41:28
【问题描述】:
【问题讨论】:
标签:
java
spring
lazy-initialization
spring-bean
post-processor
【解决方案1】:
问题的正确答案:“Spring 可以延迟初始化 Bean(Factory)PostProcessor 吗?” 是 “NO”。我自己查了一下。我创建了 2 个类:
@Lazy
@Component
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
System.out.println("bean factory!");
}
}
和
@Lazy
@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("before init!");
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
然后运行 spring 应用程序。因此,在控制台中它被打印:“bean factory”和几次“初始化之前”,尽管我在这些类上放置了@Lazy 注释。