我有一个在 tomcat 中运行的应用程序,它有一堆配置文件,对于它运行的每个环境(开发、测试和生产)都是不同的。但并非配置文件中的每一行在环境之间都会有所不同,因此总是存在重复的信息,如果发生变化,这些信息不会得到更新。
是否有一个好的框架/库可以将单独的文件折叠成一个具有特定环境块的文件?或者其他处理这个问题的方法?
我有一个在 tomcat 中运行的应用程序,它有一堆配置文件,对于它运行的每个环境(开发、测试和生产)都是不同的。但并非配置文件中的每一行在环境之间都会有所不同,因此总是存在重复的信息,如果发生变化,这些信息不会得到更新。
是否有一个好的框架/库可以将单独的文件折叠成一个具有特定环境块的文件?或者其他处理这个问题的方法?
属性文件是我一直使用的。它可以手动编辑,也可以在您的软件中编辑,Properties 对象可以读取自身并将自身写入文件系统。这是javadoc页面:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html
如果您使用 maven,您可以使用它的资源过滤功能以及配置文件为您要部署到的每个环境生成一个属性文件。
作为额外的奖励,maven 还可以为您部署您的网络应用程序。
重复并不是真正的问题,从长远来看,拥有一个中央配置文件而其他文件“扩展”可能会引起更多的麻烦。
我的建议是使用 ant 将适当的文件加载(复制和移动)到位,然后启动应用程序(捆绑到战争中?)。只是对每个环境有不同的任务。因此,您将拥有三个配置文件(dev.config、test.config 和 production.config),它们将被移动并覆盖 /WEB-INF 文件夹中的配置,具体取决于您正在运行的任务。
如果您想避免混乱,我建议单独为环境参数设置一个单独的配置文件。然后你将有一个更多的配置文件来管理。这是配置文件的数量与每个配置文件的复杂性之间的权衡。