根据数据库值动态加载spring xml文件

Tho*_*hom 2 java spring java-ee

我们目前有一个Spring Web应用程序,正在使用XML文件进行配置.我们正在启动Spring DispatcherServlet,它创建一个XmlWebApplicationContext并从默认位置加载它:spring-servlet.xml.

我使用context-param contextConfigLocation指定了几个额外的配置文件.这会从XML文件加载我们的整个应用程序.

所以这就是我想要做的.XML文件包含数据库连接信息和用于访问这些表的DAO.我想使用其中一个DAO从数据库中读取值并从XML文件中加载另一组bean.

因此,如果检索到的数据库值为橙色,我想从orange.xml加载bean.如果它是苹果,我想加载apple.xml.我希望这些bean成为相同应用程序上下文的一部分,因此在加载之后,我可以向前推进而不会注意到差异.

我想知道我是否应该实现自己的XmlWebApplicationContext子类并让DispatcherServlet实现它,但我不太确定如何继续.

小智 5

不完全从不同的文件加载,但您可以尝试使用Spring Environment和Profile抽象.

<beans profile="apple">
    <bean id="someBean">
       ...first set of bean parameters...
    </bean>
</beans>
<beans profile="orange">
    <bean id="someBean">
       ...second set of bean parameters...
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

在java中:

context.getEnvironment().setActiveProfiles("orange");
context.refresh();
Run Code Online (Sandbox Code Playgroud)