Spring中如何為屬性配置檔案自動產生文件?

banq發表於2024-03-04

在本部落格中,您將瞭解 Spring Configuration Property Documenter Maven 外掛,它可以為您解決這個問題。

幾乎每個 Spring(啟動)應用程式都會使用配置屬性。這些配置屬性確保應用程式中的某些專案可以透過 application.properties(或 yaml)檔案進行配置。

然而,還需要記錄這些屬性,以便有人知道這些屬性的含義、如何使用它們等。這通常記錄在自述檔案中。當屬性存在於還包含文件和註釋的 Java 類中時,需要手動維護此 README 檔案。

如果文件位於一個位置(Java 類,靠近程式碼)並且可以從程式碼中生成文件,這不是很好嗎?
好訊息!這正是Spring Configuration Property Documenter Maven 外掛將為您做的事情!

本部落格中使用的資源可以在GitHub上找到。

首先,您需要建立一個基本的示例應用程式。
用@ConfigurationPropertiesScan註釋主 Spring Boot 應用程式類:

@SpringBootApplication
@ConfigurationPropertiesScan(<font>"com.mydeveloperplanet.myspringconfigdocplanet.config")
public class MySpringConfigDocPlanetApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(MySpringConfigDocPlanetApplication.class, args);
    }
 
}

在包 config 中建立一個配置類 MyFirstProperties。該配置類使用了建構函式繫結。

@Getter
@ConfigurationProperties(<font>"my.first.properties")
public class MyFirstProperties {
 
    private final String stringProperty;
 
    private final boolean booleanProperty;
 
    public MyFirstProperties(String stringProperty, boolean booleanProperty) {
        this.stringProperty = stringProperty;
        this.booleanProperty = booleanProperty;
    }
}

此外,包控制器中還新增了一個 ConfigurationController,用於返回屬性。新增該控制器只是為了舉例說明如何使用屬性,與本部落格無關。

構建執行:
mvn clean verify
mvn spring-boot:run

呼叫:
curl http://localhost:8080/configuration

請檢視目錄 target/classes/META-INF。這裡有一個檔案 spring-configuration-metadata.json,其中包含有關配置類的後設資料。Spring Configuration Property Documenter Maven 外掛會使用這些資訊來生成文件。

生成該後設資料檔案是因為新增了 Spring Configuration Processor 作為依賴項。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

生成文件
該外掛可生成四種不同格式的文件:

  • ASCII Doctor
  • Markdown
  • HTML
  • XML

要生成文件,只需將外掛新增到構建部分(新增 Spring Configuration Processor 依賴項旁邊)即可。每種格式型別都會新增一個執行程式。如果只想要標記符格式的文件,只需移除其他執行項即可。

<build>
  <plugins>
    <plugin>
      <groupId>org.rodnansol</groupId>
      <artifactId>spring-configuration-property-documenter-maven-plugin</artifactId>
      <version>0.6.1</version>
      <executions>
        <execution>
          <id>generate-adoc</id>
          <phase>process-classes</phase>
          <goals>
            <goal>generate-property-document</goal>
          </goals>
          <configuration>
            <type>ADOC</type>
          </configuration>
        </execution>
        <execution>
          <id>generate-markdown</id>
          <phase>process-classes</phase>
          <goals>
            <goal>generate-property-document</goal>
          </goals>
          <configuration>
            <type>MARKDOWN</type>
          </configuration>
        </execution>
        <execution>
          <id>generate-html</id>
          <phase>process-classes</phase>
          <goals>
            <goal>generate-property-document</goal>
          </goals>
          <configuration>
            <type>HTML</type>
          </configuration>
        </execution>
        <execution>
          <id>generate-xml</id>
          <phase>process-classes</phase>
          <goals>
            <goal>generate-property-document</goal>
          </goals>
          <configuration>
            <type>XML</type>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

檔案將在使用 Maven 執行構建時生成,但快速方法是執行 process-classes 目標。

mvn process-classes

您也可以呼叫特定的執行。

mvn spring-configuration-property-documenter:generate-property-document@generate-markdown

請檢視目錄 target/property-docs。每種型別都新增了配置屬性的文件。

如果您有一個 Maven 多模組專案,可以將不同模組的所有屬性合併到一個檔案中。文件documentation中介紹瞭如何做到這一點。

結論
Spring Configuration Property Documenter Maven 外掛是一項偉大的創舉,它讓文件更貼近程式碼,並根據程式碼生成文件。在我看來,它填補了一個空白,幾乎惠及所有 Spring 專案。
 

相關文章