【发布时间】:2016-09-12 19:54:54
【问题描述】:
我有一个应用程序,它有许多依赖的 jar 文件。其中每一个都有一个spring.xml。如何为这些 jar 文件中定义的 bean 设置惰性 init = true?
依赖jar文件中的部分spring.xml文件显式设置了lazy init = false。
【问题讨论】:
标签: java spring dependency-injection spring-boot
我有一个应用程序,它有许多依赖的 jar 文件。其中每一个都有一个spring.xml。如何为这些 jar 文件中定义的 bean 设置惰性 init = true?
依赖jar文件中的部分spring.xml文件显式设置了lazy init = false。
【问题讨论】:
标签: java spring dependency-injection spring-boot
您可以通过添加自定义 BeanFactoryPostProcessor 来实现,如下所示:
@Configuration
class BeanLifecycleConfiguration {
@Bean
public static BeanFactoryPostProcessor changeCustomComponentsToLazyInit() {
return new BeanFactoryPostProcessor() {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
for (String name : beanFactory.getBeanDefinitionNames()) {
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(name);
if (beanDefinition.getBeanClassName().startsWith("your.package.name")) {
beanDefinition.setLazyInit(true);
}
}
}
};
}
}
【讨论】: