在分离的Java项目中保留属性文件的最佳方法或最佳实践是哪种?

时间:2013-03-25 14:30:20

标签: java web-applications properties configuration

我有一个项目将分开:

  • a)业务层(包含所有核心Java类和一些配置(服务等))和
  • b)表示层(包含基于Spring webflow的所有Web结构以及其上的所有配置文件。因此在开发过程中我们有几个属性文件在java/main/src包下的resource.properties.*我们在WEB-INF/confWEB-INF/i18n下的网络结构中有其他属性(这是屏幕的标签消息)..所以我的问题是以下内容:

    1. 将属性文件保留在其中是正确的 稍后将在java/main/src下的软件包下的classes webapp中的文件夹?。
    2. 离开所有人的最佳方法是什么 属性文件在一个地方让我们说 WEB-INF/configurations ?要么 将业务层的一些属性文件保留在一个地方和一些地方 来自其他地方的表示层的属性文件?
    3. 以最佳方式获得此属性的最佳方法是什么 安装webapp?,在JAR文件中提供属性 将它包含在WAR或EAR中?这允许我们即时修改 并且在没有部署整个应用程序的情况下包含在战争中......或者哪种方法是最好的或用过的方法来实现它?

2 个答案:

答案 0 :(得分:1)

我发现有助于将属性分为两类:

  1. 方便更改应用程序外观和行为的属性
  2. 特定于环境的设置的属性(例如DEV与PRODUCTION)
  3. 类别#1可以在任何有意义的WAR文件中嵌入。在WEB-INF/classes中是一个很受欢迎的地方,但是将它们放在jar文件中的META-INF中也可以很好地运行。值得选择你喜欢的标准并坚持下去。底线是这些文件在开发过程中被更改;它们在部署后不会更改,并且在系统发布时保持不变。

    类别#2应始终与deployable分开。理想情况下,只有在更改时才应部署特定于环境的属性。它实际上是一个配置管理(CM)决策。开发人员需要提供这些配置文件的基本版本,CM在部署到特定环境(QA,PRE-PROD,PROD)时应编辑它们。在强制执行职责委托的情况下(例如,在适用SOX的情况下),开发人员不应触及或看到属性文件的生产版本。我见过很多情况,这些文件的不同版本(DEV / QA / PROD)由开发人员维护并保存在源代码控制中。这是不合适的。

答案 1 :(得分:0)

我认为拥有一个单独的源文件夹'resources'并保留所有属性文件是件好事。这些还可以确保属性文件不会混淆源代码。