在java中处理特定于环境的配置的最佳方法是什么?

时间:2008-10-14 02:54:46

标签: java configuration tomcat

我有一个在tomcat中运行的应用程序,它有一堆配置文件,它们运行的​​每个环境(开发,测试和生产)都不同。但是,并非配置文件中的每一行在不同环境之间都会有所不同,因此如果发生某些变化,总会出现重复的信息。

是否有一个好的框架/库将单独的文件折叠成一个环境特定的块?或者其他一些处理方法?

5 个答案:

答案 0 :(得分:2)

  1. 为.war文件中分发的属性文件中的所有属性分配合理的默认值。
  2. 为webapp上下文中的相应属性分配特定于环境的值(例如conf / server.xml或conf / Catalina / localhost / yourapp.xml)
  3. 让应用程序首先检查上下文(针对特定于环境的值),如果未找到覆盖,则返回应用程序属性值中的默认值。

答案 1 :(得分:1)

属性文件是我一直使用的。它可以手动编辑,也可以在软件中编辑,并且Properties对象可以读取自身并将其自身写入文件系统。这是javadoc页面:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html

答案 2 :(得分:1)

如果你使用maven,你可以使用它的资源过滤功能,以及配置文件为你正在部署的每个环境生成一个属性文件。

作为额外的奖励,maven还可以为您部署您的网络应用程序。

答案 3 :(得分:0)

复制并不是一个真正的问题,拥有一个中央配置文件,其他文件的“扩展”可能会让您长期陷入困境。

我的建议是使用ant将相应的文件加载(复制并移动)到位,然后启动应用程序(捆绑到战争?)。为每个环境设置不同的任务。因此,您将有三个配置文件(dev.config,test.config和production.config)将被移动并覆盖/ WEB-INF文件夹中的配置,具体取决于您正在运行的任务。

答案 4 :(得分:0)

如果你想避免混乱,我建议单独为环境参数配置一个配置文件。然后你将有另外一个配置文件来管理。这是配置文件数量与每个配置文件的复杂性之间的权衡。