> 文章列表 > Spring Boot 配置文件配置自动提示 Configuration Processor

Spring Boot 配置文件配置自动提示 Configuration Processor

Spring Boot 配置文件配置自动提示 Configuration Processor

效果

在使用Idea等开发工具时,配置文件中输入前缀就有对应的补全提示,使开发者可以很方便配置相应属性,效果截图如下:

Spring Boot 配置文件配置自动提示 Configuration Processor
Spring Boot 配置文件配置自动提示 Configuration Processor

数据说明

这些提示来自于 spring 自动配置规范中的源数据文件 spring-configuration-metadata.jsonadditional-spring-configuration-metadata.json 中内容的定义。有了固定规范后,开发工具则可以从对应的json源数据文件中加载到对应的信息补全提示,使开发过程更加友好便捷。

spring-configuration-metadata.json 由插件 spring-boot-configuration-processor 自动生成additional-spring-configuration-metadata.json 则为附加配置需要手工维护,因为自动生成会重新覆盖所以才有了这个附加配置文件。自动生成需要结合定义的Java类、使用 @ConfigurationProperties 注解修饰、才可以被插件 spring-boot-configuration-processor 加载并自动生成到 spring-configuration-metadata.json 中。

附:其他几个关于 SpringBoot 自动配置的主要文件
配置文件:spring.factories
配置文件:spring-configuration-metadata.jsonadditional-spring-configuration-metadata.json
配置文件:spring-autoconfigure-metadata.properties
插件:spring-boot-configuration-processor
插件:spring-boot-autoconfigure-processor
Import 选择器:AutoConfigurationImportSelector

开发实现

为了实现上问效果,下面是实例:

1、定义一个 Java 配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/* 测试配置类* * @author shanhy*/
@Data
@Component
@ConfigurationProperties(prefix = "shanhy.test")
public class TestProperties {/* 唯一ID*/private int id = 100;/* 名称*/private String name;/* 标志位*/private boolean flag = true;}

其中属性上面的Java注释最终会自动生成到元数据文件 spring-configuration-metadata.json 中,所以请严格添加注释描述。

2、添加插件依赖

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

这个插件就是自动生成元数据文件内容的,如果你不需要使用插件自动生成元数据,而希望自己定义的属性配置的元数据,则自行维护 resources/META-INF/additional-spring-configuration-metadata.json 即可。

3、编译并验证结果

使用Mavan编译生成元数据文件,然后在 properties 中验证结果。

为了验证自定义附加的元数据,我在文件 resources/META-INF/additional-spring-configuration-metadata.json 中添加了一个自定义配置:

{"properties": [{"name": "shanhy.test.additional-content","type": "java.lang.Boolean","description": "附加内容"}]
}

Spring Boot 配置文件配置自动提示 Configuration Processor
Spring Boot 配置文件配置自动提示 Configuration Processor


(END)

齐鲁人百科