延迟弹簧xml进口

时间:2017-02-05 17:10:01

标签: spring spring-java-config

我有一个应用程序,我必须从属性文件中读取所有应用程序属性。然后从外部缓存框架覆盖它们。然后初始化spring beans。

我正在使用Spring的Java Config来读取属性并覆盖它们。并使用@import加载xml文件。但是一旦上下文开始加载就导入xml文件,导致所有xml bean被初始化。

那么有没有办法可以延迟xml文件导入,直到我首先加载所有属性?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码。

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

或在您不想加载的bean上单独添加lazy-init。

有很多方法可以达到您的要求如果您正在寻找基于注释的配置,可以使用其中一个depends-on或@DependsOn

您可以在读取属性文件之后创建缓存bean并使用 依赖于让容器知道bean取决于其他bean,你可以初始化缓存bean并使用你认为合适的bean。

为了更清晰,请参阅此example

<bean id="primaryBean" depends-on="cacheBean"></bean>

现在IoC保证在依赖于这个bean的bean之前创建依赖bean,所以你将拥有这个bean的一个实例,并且可以使用它。

除此之外,您可以实施LifeCycle界面

public interface Lifecycle {

    void start();
    void stop();
    boolean isRunning(); 
}

有关更多参考资料,请参阅spring docs