在项目中有几个applicationContext.xml
文件。对于已定义的bean,没有任何惰性定义。然后所有单例作用域bean在运行时实例化
哎呀。它对于开发阶段来说非常糟糕。接近2分钟需要时间服务器启动。现在我知道有没有任何解决方案在春天有效的懒惰实例化。例如,web.xml中的配置设置bean default-lazy-init =" true"。
答案 0 :(得分:4)
实现一个将lazy设置为true的自定义BeanFactoryPostProcessor,例如:
public class BeanFactoryPostProcessorImpl implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(final ConfigurableListableBeanFactory beanFactory) throws BeansException {
for (String beanName : beanFactory.getBeanDefinitionNames()) {
beanFactory.getBeanDefinition(beanName).setLazyInit(true);
}
}
}
要使其正常工作,您需要做的就是将其作为标准bean添加到您的应用程序上下文中:
ApplicationContext将检测部署到其中的任何bean 它实现了BeanFactoryPostProcessor接口,以及 自动将它们用作bean工厂的后处理器,在 适当的时候。除了部署之外,没有其他任何事情需要做 这些后处理器的方式与任何其他bean类似。
答案 1 :(得分:0)
在applicationContext.xml
个文件中,您可以在default-lazy-init
元素上添加值true
的{{1}}属性。请参阅reference。