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

标签 java spring jakarta-ee

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

我正在使用上下文参数 contextConfigLocation 指定几个额外的配置文件。这会从 XML 文件加载我们的整个应用程序。

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

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

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

最佳答案

不完全是从不同的文件加载,但您可以尝试使用 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>

在java中:

context.getEnvironment().setActiveProfiles("orange");
context.refresh();

关于java - 根据数据库值动态加载 spring xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16609355/

相关文章:

java - Docker-compose:/app.war 中没有主要 list 属性

eclipse - 带有 Spring IDE 插件的 Eclipse 和单独的 Spring Tool Suite 有什么区别?

java - 带有显示标签的 struts 1.3 磁贴

java - 使用不带 LoadTimeWeaving 的服务自定义 UserDetails

java - 使用 JWT 安全 token 访问 REST API

java - Hibernate从数据库读取数据时出错

ssl - UnboundId 使用来自 Websphere 的 SSL KeyStore

java - 如何访问java类中WEB-INF文件夹下的文件

Java - 为什么这个初始化不起作用?

java - Universal Tween Engine 中的时间控制