问题
-
您是否曾经觉得自己没有适当的方法来监督一个项目,因为它具有许多可自定义的属性,但没有记录在下面,并且您不知道在哪里可以启动新功能或bugfix?
-
您是否曾经觉得自己的服务太多了,您不知道如何在外部自定义它们?
-
您是否曾经想过有任何方法可以记录您项目中的应用程序的属性?
如果出于任何问题,您的答案是是,那么您是最好的位置。
春季配置属性记录仪
此工具使您可以生成有关项目中@ConfigurationProperties
注释的类的信息和有用的文档。
但是如何?
很容易,如果您使用Spring Boot工作,则首先需要在构建时间期间对类Path的依赖性,这是注释处理器,它将读取您的类并基于注释配置类生成元数据文件。 P>
在Maven的情况下,您应该添加以下依赖性:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
mvn package
之后,以下文件应显示在您的target
文件夹的META-INF
文件夹中:spring-configuration-metadata.json
。
这是一个简单的JSON文件,但其中包含有关您的配置属性的信息。
让我们看看一个示例:
@Component
@ConfigurationProperties(prefix = "this.is.my")
class MyProperties {
/**
* This is my variable.
*/
private String variable;
@Deprecated(since = "Since you are a pilot")
private String anotherVariable = "with default value";
/**
* A duration.
*/
private Duration duration = Duration.ofDays(2);
private Instant instant = Instant.ofEpochSecond(123);
private LocalDate date = LocalDate.of(1995, 10, 20);
private LocalDateTime dateTime = LocalDateTime.of(1995, 10, 20, 0, 1, 2, 3);
// Getters & Setters
@DeprecatedConfigurationProperty(reason = "Because it is deprecated", replacement = "instant")
public Duration getDuration() {
return duration;
}
}
生成的spring-configuration-metadata.json
文件:
{
"groups": [
{
"name": "this.is.my",
"type": "org.rodnansol.MyProperties",
"sourceType": "org.rodnansol.MyProperties"
}
],
"properties": [
{
"name": "this.is.my.date",
"type": "java.time.LocalDate",
"sourceType": "org.rodnansol.MyProperties"
},
{
"name": "this.is.my.date-time",
"type": "java.time.LocalDateTime",
"sourceType": "org.rodnansol.MyProperties"
},
{
"name": "this.is.my.instant",
"type": "java.time.Instant",
"sourceType": "org.rodnansol.MyProperties"
},
{
"name": "this.is.my.variable",
"type": "java.lang.String",
"description": "This is my variable.",
"sourceType": "org.rodnansol.MyProperties"
},
{
"name": "this.is.my.another-variable",
"type": "java.lang.String",
"sourceType": "org.rodnansol.MyProperties",
"deprecated": true,
"deprecation": {}
},
{
"name": "this.is.my.duration",
"type": "java.time.Duration",
"description": "A duration.",
"sourceType": "org.rodnansol.MyProperties",
"deprecated": true,
"deprecation": {
"reason": "Because it is deprecated",
"replacement": "instant"
}
}
],
"hints": []
}
好的,但是下一步是什么?
我们构建了一个可以使用此JSON文件的工具,并可以从其以下格式中生成文档:
- Markdown
- asciidoc
- HTML
- XML-如果XSLT转换和XSD支持
- 你命名
您可以找到它here。
它能做什么?
读取一个或多个元数据文件
读取您的元数据JSON文件后,将以指定格式创建文档。
可以在该过程之前指定多个JSON元数据文件,多模块项目还可以利用它具有一个文档,其中所有属性都可以从不同的模块中获得。
如果元数据文件在JAR文件中,则不是问题,该工具可以从JAR文件中读取它。
汇总更多元数据文件
如果您在多模型环境中工作,则可能有多个元数据文件,但是您不必担心,也可以生成单个文档和汇总文档。
默认模板和自定义
该工具为您提供了一个用车把编写的默认模板,但也准备支持自定义模板。
默认情况下,支持车把模板引擎得到支持,但是您可以使用自己的模板引擎,但是您必须为其编写扩展名。
查看文档here。
排除并包括组和属性
由于该工具也使您还可以从JAR文件中读取和使用元数据文件,因此您可以从官方的Spring Boot Jars中提取信息,并且可以将其放入最终文档。
有时这些文件很大,您可能需要选择特定的组和/或密钥要渲染或不渲染到最终输出中。
也支持排除和包含列表。
请检查以下样本here。
如何使用该工具?
核心功能是用Java 11构建的,这些功能可通过:
获得:用法
只需将以下插件添加到您的pom.xml
,就可以使用了。
<plugin>
<groupId>org.rodnansol</groupId>
<artifactId>spring-configuration-property-documenter-maven-plugin</artifactId>
<version>${final-version}</version>
<executions>
<execution>
<id>generate-adoc</id>
<phase>process-classes</phase>
<goals>
<goal>generate-property-document</goal>
</goals>
<configuration>
<type>ADOC</type>
</configuration>
</execution>
</executions>
</plugin>
检查可用的Maven目标here。
模板自定义
如果默认一个不符合您的要求,可以自定义模板,请阅读有关here的文档。
结帐样品和文档
随时可以查看样品和文档,因为它将为how-tos提供更广泛的了解。
您是否正在使用Quarkus的Spring Boot?
如果是的,请不要担心,我们为您覆盖,请查看此sample。