依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. <optional>true</optional>
  5. </dependency>

使用 spring-boot-configuration-processor 配合 @ConfigurationProperties 可以在生成目录下创建 META-INF/spring-configuration-metadata.json 该文件中存放了配置文件的元数据信息。

使用方式

编写Properties类

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.net.InetAddress;

@ConfigurationProperties(prefix = "demo", ignoreUnknownFields = true)
public class DemoProperties {
    /**
     * 绑定ip
     */
    private String bind;
    /**
     * 网络地址
     */
    private InetAddress address;
    /**
     * 监听端口
     */
    private Integer port = 8080;
    /**
     * 功能开启
     */
    private Boolean enable = true;

    public String getBind() {
        return bind;
    }

    public void setBind(String bind) {
        this.bind = bind;
    }

    public InetAddress getAddress() {
        return address;
    }

    public void setAddress(InetAddress address) {
        this.address = address;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public Boolean getEnable() {
        return enable;
    }

    public void setEnable(Boolean enable) {
        this.enable = enable;
    }
}

编写Config类,并开启Properties扫描。一般建议把Properties和Config结合起来做成一个模块。

import com.example.demo.properties.DemoProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(DemoProperties.class)
public class DemoConfig {
}

使用 mvn compile 编译生成元数据

需要手动设置的元数据

虽然 spring-boot-configuration-processor 会为我们生成一些元数据,但是有时我们需要额外补充一些信息。这时可以在 resources/META-INF 下创建一个 additional-spring-configuration-metadata.json 文件,在里面手工添加补充信息。
文件编写语法参考最后的文档链接。

存在问题