Spring Boot 配置文件配置自动提示 Configuration Processor
效果
在使用Idea等开发工具时,配置文件中输入前缀就有对应的补全提示,使开发者可以很方便配置相应属性,效果截图如下:
元数据说明
这些提示来自于 spring 自动配置规范中的源数据文件 spring-configuration-metadata.json
和 additional-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.json
和additional-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": "附加内容"}]
}
(END)