在运行使用@ContextConfiguration的集成测试时,我希望延迟加载所有spring bean。理想情况下,我可以在一个地方应用这个延迟加载,并将它应用于通过@ContextConfiguration批注加载的任何bean。
答案 0 :(得分:1)
是的。
您可以使用BeanDefinitionRegistryPostProcessor/BeanFactoryPostProcessor
。
@Configuration
static class LazyBeans implements BeanDefinitionRegistryPostProcessor {
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry bdr) throws BeansException {
for (String name : bdr.getBeanDefinitionNames()) {
final BeanDefinition beanDefinition = bdr.getBeanDefinition(name);
if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
beanDefinition.setLazyInit(true);
}
}
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory clbf) throws BeansException {}
}