有没有一种很好的方法来记录Spring @Value字段?

时间:2019-09-19 18:21:58

标签: spring spring-boot

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

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

我知道我们可以使用JavaDoc某种程度地实现我们的目标,但是文档将与其他JavaDoc(方法,字段,类等)一起埋藏,并且仍然依靠开发人员来记住将JavaDoc添加到每个字段中。 / p>

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

1 个答案:

答案 0 :(得分:2)

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

这里有一些想法:

  • 为他们编写BDD测试(也可以用作文档)在功能上实际上没有任何意义,但从技术上来说确实有意义。 确实,您可以编写BDD集成测试(使用Cucumber或任何其他库),在其中记录并测试每个预期属性的存在。

  • 这不是一个完美的解决方案,但是您至少可以使用these Spring Boot actuators来检索公开的属性和更多信息:

  

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

     

env:公开Spring的ConfigurableEnvironment中的属性。

  • 在任何可能的情况下,都建议使用@ConfigurationProperties注入来对可一起使用的属性进行分组,而不是@Value。将它们隔离在@ConfigurationProperties类中并为它们添加javadoc完全可以证明它们的存在和使用。

  • 根据{{​​1}}的建议,
  • 您还可以生成your own metadata by using the Annotation Processor

  

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

     

处理器将拾取已注释的类和方法   @ConfigurationProperties 用于字段值的Javadoc   配置类用于填充描述属性

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