我希望能够为我的 java 应用程序(tomcat7、spring-mvc)实现无配置部署。例如,现在我们正在考虑为我们部署到的每个环境(产品、阶段、开发)创建一个 context.xml 文件:
context_prod.xml
context_stage.xml
context_dev.xml
context.xml (for localhost)
在我们的每台服务器上,我们都会有一个符号链接(symbolic link)context.xml
,它将指向适当的上下文文件(例如context_prod.xml)。所以当我们部署时,我们不必担心更改数据库引用、 key 等。
我觉得可能有更好的方法来做到这一点;也许是 Spring 中内置的一个?
最佳答案
Spring 最近添加了处理环境配置的功能:
http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/
这对我来说仍然有点复杂,而且我已经按照您在我自己的 Spring MVC 应用程序中要求的日志记录进行了操作。在我的 DispatcherServlet 配置中,我有这一行:
<context:property-placeholder location="classpath*:/system.properties"/>
<util:properties id="mySystemProperties" location="classpath:/logging/log4j-${system.runMode}.properties" />
system.runMode 只是我们创建的一个环境变量,并在启动时在 CATALINA.SH 中设置,如下所示:Setting environment variable TESSDATA_PREFIX in Tomcat
然后,我使用 Spring EL 引用我想要的任何值,并且它适用于每个环境。正如您所看到的,我为日志记录执行了此操作,并且每个环境都有不同的日志记录配置文件。
关于java - 如何在我的 tomcat 应用程序中实现特定于环境的 init 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18449093/