前言
在springboot项目中,我们会发现在配置文件中配置一些官方的配置项时会自动出现配置项提示和说明,非常方便,但是在配置自定义属性时却没有代码提示和说明.此时我们可以借助spring-boot-configuration-processor自动生成元数据文件来解决上述问题。
先看一效果,在自定义properties文件中配置自定义属性和spring的配置项都可出现提示说明。
原理
SpringBoot项目生成的jar包内包含有配置属性详细信息的元数据文件(spring-configuration-metadata.json),这些文件能够为在配置application.yml或者application.properties时(自定义的配置文件需要纳入框架管理)提供属性说明、默认值和自动补全。IDE则是通过读取配置信息的元数据从而实现自动提示。
步骤
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 新建一个自定义的配置文件my.properties和一个配置类绑定
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource({"classpath:my.properties"})
@ConfigurationProperties(prefix="test")
@Data
public class ServerSettings {
/**
* 名称
*/
private String name;
/**
* domain不能为空
*/
private String domain="default-domain";
}
- 重新编译项目(记得clean)
此时,在META-INF目录下,可以看到新生成了一个元数据文件
打开这个文件便可以看到新增的配置信息
- 自定义配置文件纳入框架管理
至此,在application.proterties中就已经可以出现提示信息了,但是自定义的配置文件中还不行,需要将自定义的配置文件纳入框架管理
- 测试一下,大功告成
手动编写元数据
大多数元数据文件是在编译时通过处理使用@ConfigurationProperties注解注释的类的所有属性自动生成的。但同样也可以指定格式手动编写一部分元数据,用于极端情况或者更高级的用法。
-
在resource目录下的META-INF目录下新建spring-configuration-metadata.json文件
-
在properties标签下增加内容
-
重新clean编译
再看一下效果
其它可能产生影响的配置
- idea需要启动注解处理