我有几次遇到同样的问题,我想对其他人对此问题的看法有所了解: 假设我们将Spring应用程序打包为.war文件,我们想运行它在几个环境。 (开发/测试/ preprod/prod /等)在Spring Web应用程序中处理配置文件
为了访问应用程序所需的基础架构(数据库/ web服务等),我们将访问信息存储在配置文件中,同时一些业务配置也在这些文件中。 假设我们使用.properties文件(因为我们在战争中有一个弹簧应用程序,并且我们喜欢通过appcontext中的一行代码读取属性) 并且还假设在不同的环境中我们不会没有相同的appserver/servlet容器。 (例如:开发,测试:码头,preprod:tomcat的,PROD:GlassFish的)
我通常做的是创建多个Maven的型材,每个环境,每个相应的文件所需的配置。
现在最近我遇到了一个运行操作的人的问题: '如果在preprod环境中更改了数据库,那么我们真的必须在buildserver上生成具有适当配置文件的新版本? 我回答'不,你可以真正去....../webapps/currentApp/WEB-INF/classes/config/application.properties并在那里更改值,然后重新启动容器'
我们想出了一个解决这个问题的一些方面的解决方案: 使用Maven汇编插件我们在里面嵌入了一个Jetty 这个战争使得它可以用作'可执行的'战争,同时也使我们有可能拥有一个全局配置XML, 嵌入式Jetty的入门者在分解的war目录中创建/修改适当的.properties文件,然后才启动应用程序。
但是,如果您想使用除Jetty以外的其他任何内容,这也不能解决问题。
大家怎么处理同样的情况?
感谢你的回答,有趣的方法,看起来像值得一试。 – abalogh 2011-05-12 10:13:33