Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为所有Springbean激活惰性实例化_Spring - Fatal编程技术网

如何为所有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