Spring 配置框架建议

Spring 配置框架建议,spring,configuration,configuration-management,Spring,Configuration,Configuration Management,我们正在着手开发一个基于spring的web应用程序(在20个JVM上运行)。web应用程序在不同的环境(如开发、质量保证、测试、压力、生产)上运行 我们正在考虑为应用程序设计一个配置框架,其设计目标如下 配置框架的设计目标 支持继承模型: 如果配置属性是静态的,那么它应该能够全局定义,并继承到所有环境中。环境应该能够覆盖继承属性的值 消除冗余: 只需查看一个位置即可查看、修改和添加配置属性。这样可以减少添加或修改属性时丢失文件的风险 能够在运行时管理和维护属性。 应该能够轻松地更改内存中一对多

我们正在着手开发一个基于spring的web应用程序(在20个JVM上运行)。web应用程序在不同的环境(如开发、质量保证、测试、压力、生产)上运行

我们正在考虑为应用程序设计一个配置框架,其设计目标如下

配置框架的设计目标

  • 支持继承模型:
    如果配置属性是静态的,那么它应该能够全局定义,并继承到所有环境中。环境应该能够覆盖继承属性的值
  • 消除冗余:
    只需查看一个位置即可查看、修改和添加配置属性。这样可以减少添加或修改属性时丢失文件的风险
  • 能够在运行时管理和维护属性。
    应该能够轻松地更改内存中一对多JVM中的属性,并在JVM重新启动时保留该更改
  • 调试能力。
    为了确定功能开关等的当前状态,您应该能够轻松地从内存中转储属性(一对多属性)
  • 降低不同INT、QA和压力环境不同步、难以部署和维护的可能性
  • 支持开发的易用性,以及生产过程中的部署过程。此更改不应对本地开发人员有效开发的能力产生负面影响。相反,它应该让事情变得更容易

  • 对于在Spring中实现这种配置框架,有什么建议吗?

    您有很多需求,我没有答案,但我建议应用程序尽可能将其运行时配置参数外部化。我喜欢在我的bean文件中使用属性替换,从文件系统中的一个已知位置加载值。在生产环境中,应锁定该位置,以便只有管理员或应用程序才能读取/写入该位置

    因此,在您的开发环境中,您将拥有特定于开发人员需求的东西(如本地数据库凭据等)。QA和生产也一样。您只需构建一次应用程序(通常由build box/continuous integration server完成),它只需加载已部署到的环境的配置。这将所有细节从代码库中分离出来,这有助于将密码和加密密钥等敏感信息锁定在安全的地方

    如果您还不熟悉使用Spring执行属性替换,请查看以下内容:


    您有很多需求,但我不知道所有需求的答案,但我建议应用程序尽可能将其运行时配置参数外部化。我喜欢在我的bean文件中使用属性替换,从文件系统中的一个已知位置加载值。在生产环境中,应锁定该位置,以便只有管理员或应用程序才能读取/写入该位置

    因此,在您的开发环境中,您将拥有特定于开发人员需求的东西(如本地数据库凭据等)。QA和生产也一样。您只需构建一次应用程序(通常由build box/continuous integration server完成),它只需加载已部署到的环境的配置。这将所有细节从代码库中分离出来,这有助于将密码和加密密钥等敏感信息锁定在安全的地方

    如果您还不熟悉使用Spring执行属性替换,请查看以下内容:


    我同意杰夫·霍尔的回答,但你可能还想阅读本课程的文档

    如果<代码> PrimeTypHydRealDealver 和PrimeTyrReDigFrimeReule>代码>类不适合您的需求,那么您可能需要考虑以下两步修改/增强Jeff Hall的答案。

    第一步。我的(发音为“Config4Star”)配置文件解析器解决了几乎所有您声明的需求,只是它没有集成到Spring中。我建议您阅读“Config4*入门指南”的第2章和第3章,以确定Config4*是否对您的项目有用。如果你认为它可能有用,那么

    第二步。复制Spring
    PropertyPlaceHolderConfigure
    类的源代码,并对其进行修改,以从Config4*文件而不是属性文件中获取名称=值对


    这两步建议的潜在好处是,您不需要为每个INT/QA/STRESS环境和/或20个JVM中的每一个维护单独的属性文件。相反,Config4*的“适应性配置”功能将使您能够将所有这些环境和JVM的运行时配置值放入单个配置文件。

    我同意Jeff Hall的回答,但您可能还想阅读该类的文档

    如果<代码> PrimeTypHydRealDealver 和PrimeTyrReDigFrimeReule>代码>类不适合您的需求,那么您可能需要考虑以下两步修改/增强Jeff Hall的答案。

    第一步。我的(发音为“Config4Star”)配置文件解析器解决了几乎所有您声明的需求,只是它没有集成到Spring中。我建议您阅读“Config4*入门指南”的第2章和第3章,以确定Config4*是否对您的项目有用。如果你认为它可能有用,那么

    第二步。复制Spring
    PropertyPlaceHolderConfigure
    类的源代码,并对其进行修改,以从Confi