我有一个应用程序,我必须从属性文件中读取所有应用程序属性。然后从外部缓存框架覆盖它们。然后初始化spring beans。
我正在使用Spring的Java Config来读取属性并覆盖它们。并使用@import加载xml文件。但是一旦上下文开始加载就导入xml文件,导致所有xml bean被初始化。
那么有没有办法可以延迟xml文件导入,直到我首先加载所有属性?
答案 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。