如何为所有Springbean激活惰性实例化
在一个项目中有几个如何为所有Springbean激活惰性实例化,spring,Spring,在一个项目中有几个applicationContext.xml文件。定义的bean没有任何惰性定义。然后所有单例范围的bean在运行时实例化。 哎呀。这对开发阶段非常不利。服务器启动大约需要2分钟的时间。现在我将知道在spring中是否有任何针对活动惰性实例化的解决方案。例如,web.xml中设置bean default lazy init=“true”的配置 在applicationContext.xml文件中,您可以在元素上添加值为true的default lazy init属性。请参阅。在
applicationContext.xml
文件。定义的bean没有任何惰性定义。然后所有单例范围的bean在运行时实例化。哎呀。这对开发阶段非常不利。服务器启动大约需要2分钟的时间。现在我将知道在spring中是否有任何针对活动惰性实例化的解决方案。例如,web.xml中设置bean default lazy init=“true”的配置 在
applicationContext.xml
文件中,您可以在
元素上添加值为true
的default lazy init
属性。请参阅。在applicationContext.xml
文件中,您可以在
元素上添加default lazy init
属性,该属性的值为true
。请参阅。实现一个自定义BeanFactoryPostProcessor,将lazy设置为true,例如:
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的方式运行
实现将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的方式运行
我有许多
applicationContext.xml
,编辑所有这些内容并不好。例如,假设您有2000个applicationcontext.xml
。然后您将编辑所有这些?因此,可以实现BeanFactoryPostProcessor
,并在postProcessBeanFactory
do中为(字符串beanName:beanFactory.getBeanDefinitionNames()){beanFactory.getBeanDefinition(beanName).setLazyInit(true);}
谢谢。但是我怎样才能注册呢。我只是创建一个实现BeanFactoryPostProcessor
的类,还是在创建之后,我应该在web.xml或其他配置文件中注册它。谢谢。我有很多applicationContext.xml
,编辑这些内容并不好。例如,假设您有2000个applicationcontext.xml
。然后您将编辑所有这些?因此,可以实现BeanFactoryPostProcessor
,并在postProcessBeanFactory
do中为(字符串beanName:beanFactory.getBeanDefinitionNames()){beanFactory.getBeanDefinition(beanName).setLazyInit(true);}
谢谢。但是我怎样才能注册呢。我只是创建一个实现BeanFactoryPostProcessor
的类,还是在创建之后,我应该在web.xml或其他配置文件中注册它。谢谢。你把问题框得很好,脱帽致敬…:你把问题说得很好,脱帽致敬…:P