动态更改spring.properties中的属性而不必重建.war?

时间:2011-06-26 22:19:09

标签: java hibernate spring spring-mvc

我似乎遇到了我想要做的事情。我一直在编写一个自动化应用程序,它应该运行我们的Spring MVC应用程序的新实例(在新创建的云服务器实例上)。我想如果我只是让这个自动化应用程序在下载后解压缩我的.war,然后更改spring.properties中的信息以匹配我的数据库设置等,那么它应该可以正常工作。但是,这似乎导致了一些重大问题,因为在我这样做之后应用程序将无法使用Tomcat加载(提供有关注册JDBC和挂起的错误)。如果我在构建spring.properties之前输入我想要的.war设置,然后在Tomcat中正常运行.war,它就可以正常工作。

我希望有人可以解释为什么会出现这个问题和/或我可以做什么,这样我就可以在运行.war文件之前动态设置spring.properties中的属性而不必使用新设置构建.war(因为这会增加所有内容的麻烦)。

2 个答案:

答案 0 :(得分:3)

选项1:在运行时使用上下文:property-placeholder和覆盖值使用System Property。

选项2:从战争外部的文件中读取运行时属性

6 Tips for Managing Property Files with Spring

答案 1 :(得分:1)

所以,也许这不是正确的答案,但是如果你试图外化你的数据源,那么你应该将JNDI与Tomcat一起使用。它更清洁。您只需使用带弹簧的jee命名空间来查找数据源。这样服务器管理员可以在server.xml中设置数据源:)