在依赖的罐子里,Spring Lazy Init = true

时间:2016-05-16 21:52:30

标签: java spring dependency-injection spring-boot

我有一个应用程序,它有许多依赖的jar文件。其中每个都有一个spring.xml。如何为这些jar文件中定义的bean设置lazy init = true?

依赖jar文件中的某些spring.xml文件显式设置了lazy init = false。

1 个答案:

答案 0 :(得分:0)

您可以通过添加自定义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);
                    }
                }
            }
        };
    }
}