2

我希望能够为我的 java 应用程序(tomcat7、spring-mvc)实现无配置部署。例如,现在我们正在考虑为我们部署到的每个环境(prod、stage、dev)创建一个 context.xml 文件:

context_prod.xml 
context_stage.xml 
context_dev.xml
context.xml (for localhost)

在我们的每台服务器上,我们都会有一个符号链接context.xml,它指向适当的上下文文件(例如 context_prod.xml)。所以当我们部署时,我们不必担心更改数据库引用、键等。

我觉得可能有更好的方法来做到这一点;也许是内置在弹簧中的?

4

2 回答 2

1

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 来引用我想要的任何值,并且它适用于每个环境。如您所见,我为我们的日志记录执行此操作,并且每个环境都有不同的日志记录配置文件。

于 2013-08-26T17:07:09.190 回答
1

您可以使用Spring 3.1 中引入的Spring @Profile 。在您的情况下,您可以使用 dev、stage、prod 等配置文件。

此配置文件值可以是初始化的运行时间。因此,当您的应用程序启动时,Spring 可以根据配置获取适当的配置文件。

您可以通过部署描述符 (web.xml) 等从环境变量设置配置文件。这个 Spring 源代码教程对您来说可能很有趣。

我个人在 web.xml 的构建期间使用 Maven 构建来替换配置文件值。在构建时,我将配置文件值作为构建参数传递。

于 2013-08-26T17:16:13.170 回答