【问题标题】:Where should configuration be placed?配置应该放在哪里?
【发布时间】:2010-05-16 07:43:35
【问题描述】:

我的应用程序结构如下:

  • 主要
  • 服务
  • 实用工具

我创建了一个从 XML 文件读取应用程序配置的类。问题是应该放在哪里?

通过反射,我会将它放在实用程序中,但实用程序类具有静态方法并且是无状态的,而此类使用 Apache Commons XMLConfiguration 的实例。我是否应该只调整方法,使此实例仅限于此类中方法的范围?

【问题讨论】:

  • 您是在询问 XML 的位置或加载和公开 xml 的类的位置?
  • Cherouvim,我想知道根据应用程序划分的方式,加载 XML 的类应该去哪里。这是一个细节,但我现在想采用最佳做法,避免养成坏习惯。

标签: java configuration domain-driven-design apache-commons three-tier


【解决方案1】:

我假设这些项目是包,所以我会选择 ma​​in 包。

  • ma​​in 包含应用程序及其配置阅读器
    • 配置
    • 日志
  • 服务
  • 实用工具

为什么? 应用程序的配置,无论是否是 XML 格式,以及是否基于 Spring 等应用程序框架,都是其主要功能的一部分。启动应用程序是应用程序的主要职责。它提供的所有业务功能、所有闪亮的特性都在域和服务层中实现。

你说得对,utils 都是关于静态或类似工具的。由于应用程序的配置非常重要,我不会将其声明为实用程序。实用程序可以很容易地被另一个相同类型的实用程序替换(例如StringUtil vs. StringUtils vs. IOUtils 等。它们都具有非常相似的功能)

【讨论】:

    【解决方案2】:

    这取决于您使用的构建系统和应用程序类型,例如maven 会建议将配置文件放在src/main/resources

    在 WAR 文件中,您可以将它们放在 WEB-INF 或 WEB-INF/config 中

    根据您的项目结构,我建议引入文件夹配置或资源,因为几乎每个人都希望它们在那里。

    【讨论】:

      【解决方案3】:

      如果您正在使用 Spring,请查看 Configuration Placeholders。您可以为您的配置属性使用一个简单的 java 属性文件,并将其放置在您的类路径(或任何其他位置)上。此外,您可以创建自己的实现来使用不同的形式来保存您的配置值(XML、数据库等)

      【讨论】:

        【解决方案4】:

        由于配置是一个跨领域的方面,它不会专门映射到这些层之一。将配置文件(XML 或属性)放入类路径并通过 Spring 使用它来配置您的 bean。

        对于基于属性的配置数据,PropertyPlaceholderConfigurer 是一个很好的解决方案。

        【讨论】:

          【解决方案5】:

          我敦促您看看 Spring。一开始对你来说可能看起来有点矫枉过正,但你会喜欢的。

          【讨论】:

          • Spring 已经被用于注入 Service 和 DAO 类的实例。它如何用于配置?
          • 使用属性文件并包含它们。然后,您可以将所有属性用作变量,然后可以将其用于注入到 bean 中。我自己之前没有这样做,但几乎所有基于 Spring 的框架或应用程序都不喜欢这样做。
          猜你喜欢
          • 2018-08-16
          • 1970-01-01
          • 1970-01-01
          • 2023-04-07
          • 2019-04-18
          • 2015-03-10
          • 2014-10-05
          • 2012-02-17
          • 2018-11-20
          相关资源
          最近更新 更多