在编写Spring Boot应用程序的过程中,我们的团队添加了许多@Value
批注以帮助使事情可配置。在某些时候,我们开始完全不了解所添加的内容和可配置的内容。 QA和DevOps团队向我们提出了很多问题,这些问题涉及哪些可以配置,哪些不能配置。
当前,我们只是在代码库中进行grep并应用一些粗略的正则表达式来尝试解析出有意义的部分。但这并不能解决100%的情况,因此不可避免地,我们最终要仔细研究代码以找出可以配置哪些字段。
我知道我们可以使用JavaDoc某种程度地实现我们的目标,但是文档将与其他JavaDoc(方法,字段,类等)一起埋藏,并且仍然依靠开发人员来记住将JavaDoc添加到每个字段中。 / p>
是否有人找到一种更自动化的方式来记录其@Value
字段?我在想像Swagger之类的东西,但是专门针对Spring及其外部配置的各种方式。
答案 0 :(得分:2)
Javadoc确实是为开发人员(而非质量检查人员或操作人员)提供文档的一种方式。
您的问题确实很有趣,但很难回答这个问题,因为@Value
是组件的实施细节。夸张地说,您引用REST文件合同,这是一个重要的区别。
这里有一些想法:
为他们编写BDD测试(也可以用作文档)在功能上实际上没有任何意义,但从技术上来说确实有意义。 确实,您可以编写BDD集成测试(使用Cucumber或任何其他库),在其中记录并测试每个预期属性的存在。
这不是一个完美的解决方案,但是您至少可以使用these Spring Boot actuators来检索公开的属性和更多信息:
configprops
:显示所有@ConfigurationProperties的整理列表。
env
:公开Spring的ConfigurableEnvironment中的属性。
在任何可能的情况下,都建议使用@ConfigurationProperties
注入来对可一起使用的属性进行分组,而不是@Value
。将它们隔离在@ConfigurationProperties
类中并为它们添加javadoc完全可以证明它们的存在和使用。
您可以轻松地从中生成自己的配置元数据文件 用@ConfigurationProperties注释的项目...
处理器将拾取已注释的类和方法 @ConfigurationProperties 。 用于字段值的Javadoc 配置类用于填充描述属性。
它与上一点结合:尽可能支持caco3
。