2

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

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

4

5 回答 5

2
  1. 为 .war 文件中分布的属性文件中的所有属性分配合理的默认值。
  2. 为 webapp 上下文中的适当属性分配特定于环境的值(例如 conf/server.xml 或 conf/Catalina/localhost/yourapp.xml)
  3. 让您的应用程序首先检查上下文(针对特定于环境的值),如果未找到覆盖,则回退到应用程序属性值中的默认值。
于 2008-10-14T03:14:56.513 回答
1

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

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

于 2008-10-14T02:59:33.423 回答
1

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

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

于 2008-10-14T03:43:12.570 回答
0

重复并不是真正的问题,从长远来看,拥有一个中央配置文件而其他文件“扩展”可能会引起更多的麻烦。

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

于 2008-10-14T03:04:33.337 回答
0

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

于 2008-10-14T11:25:42.107 回答