Spring在开发环境中进行初始化

时间:2011-11-28 10:10:24

标签: java spring lazy-loading

为了减少开发环境中的服务器启动时间,我想改变Spring的默认行为来懒惰地初始化bean。

我知道这可以通过在bean级别指定default-lazy-init="true"来完成。但是我每次从SCM获取最新的配置文件时都不想更改此属性,并在重新检入之前将其更改回来。

还有其他方法来外化这个属性吗?比如指定一个System属性?

我还尝试在特定于环境的属性文件中定义属性并引用beans元素中的属性,但它不起作用。

default-lazy-init="${default-lazy-init-value}"

任何其他方式都可以轻松实现这一目标吗?

2 个答案:

答案 0 :(得分:3)

如何在外部属性文件中获取default-lazy-init并将其传递给bean定义

<强> XML

<bean id="propertyPlaceholderConfigurer"  
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  <property name="locations">  
    <list>  
      <value>classpath:system-env.properties</value>  
    </list>  
  </property>  
</bean>  

<bean id="bean1" class="com.Foo" lazy="${default-lazy-init}"/>  

属性文件(system-env.properties)

#set true in dev (if needed)
default-lazy-init=true

答案 1 :(得分:1)

您可以使用以下内容:

<beans default-lazy-init="true">
<!-- no beans will be pre-instantiated... -->
</beans>

...如http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-factory-lazy-init

所述