我似乎遇到了我想要做的事情。我一直在编写一个自动化应用程序,它应该运行我们的Spring MVC应用程序的新实例(在新创建的云服务器实例上)。我想如果我只是让这个自动化应用程序在下载后解压缩我的.war
,然后更改spring.properties
中的信息以匹配我的数据库设置等,那么它应该可以正常工作。但是,这似乎导致了一些重大问题,因为在我这样做之后应用程序将无法使用Tomcat加载(提供有关注册JDBC和挂起的错误)。如果我在构建spring.properties
之前输入我想要的.war
设置,然后在Tomcat中正常运行.war
,它就可以正常工作。
我希望有人可以解释为什么会出现这个问题和/或我可以做什么,这样我就可以在运行.war
文件之前动态设置spring.properties中的属性而不必使用新设置构建.war
(因为这会增加所有内容的麻烦)。
答案 0 :(得分:3)
选项1:在运行时使用上下文:property-placeholder和覆盖值使用System Property。
选项2:从战争外部的文件中读取运行时属性
答案 1 :(得分:1)
所以,也许这不是正确的答案,但是如果你试图外化你的数据源,那么你应该将JNDI与Tomcat一起使用。它更清洁。您只需使用带弹簧的jee命名空间来查找数据源。这样服务器管理员可以在server.xml中设置数据源:)