ConfigurationProperties

ConfigurationProperties

在编写Spring Boot应用程序的过程中,我们的团队添加了许多@Value批注以帮助使事情可配置。在某些时候,我们开始完全不了解所添加的内容和可配置的内容。 QA和DevOps团队向我们提出了很多问题,这些问题涉及哪些可以配置,哪些不能配置。

当前,我们只是在代码库中进行grep并应用一些粗略的正则表达式来尝试解析出有意义的部分。但这并不能解决100%的情况,因此不可避免地,我们最终要仔细研究代码以找出可以配置哪些字段。

我知道我们可以使用JavaDoc来达到我们的目标,但是文档将与其他JavaDoc(方法,字段,类等)一起埋藏,并且仍然依赖于开发人员记住将JavaDoc添加到每个字段中。

有没有人找到一种更自动化的方式来记录其@Value字段?我在想像Swagger之类的东西,但是专门针对Spring及其可以外部化配置的各种方式。

最佳答案

Javadoc的确是为开发人员(而非质量检查人员或操作人员)提供文档的一种方式。
您的问题确实很有趣,但是很难回答这个问题,因为@Value是组件的实现细节。夸张地说,您引用REST的文档合同,这是一个重要的区别。

这里有一些想法:

  • 为它们编写BDD测试(也可以用作文档)在功能上实际上没有任何意义,但在技术上确实有意义。
    实际上,您可以编写BDD集成测试(使用Cucumber或任何其他库),在其中记录并测试每个预期属性的存在。
  • 不是一个完美的解决方案,但是您至少可以使用these Spring Boot actuators检索公开的属性以及更多信息:

  • configprops:显示所有@ConfigurationProperties的整理列表。

    env:公开Spring的ConfigurableEnvironment中的属性。
  • 只要有可能,建议使用@ConfigurationProperties注入来对可一起使用的属性进行分组,而不是使用@Value。将它们隔离在@ConfigurationProperties类中并为它们添加javadoc完全可以证明它们的存在和使用。
  • caco3建议的
  • 也可以生成your own metadata by using the Annotation Processor:

  • 您可以轻松地从中生成自己的配置元数据文件
    用@ConfigurationProperties注释的项目...

    处理器选择带注释的类和方法
    使用@ConfigurationProperties
    内的字段值的Javadoc
    配置类用于填充描述属性

    它与上一点结合:尽可能支持@ConfigurationProperties

    10-07 21:27