背景
spring 提供了属性配置服务, 通过注解@ConfigurationProperties可以很方便地读取外部属性(application.propeties和application.yml)
在application.propeties中书写配置的时候,第三方库的配置一般能弹出自动完成提示,但自己定义的属性却不行,这是因为弹出自动完成的提示,需要一点点配置。
环境
intelij idea 2021.3
gradle 7.3.2
自动提示的原理
ide能够实现自动提示,是因为spring提供了Configuration Metadata(一般在文件spring-configuration-metadata.json中)
配置类
@Configuration
@ConfigurationProperties(prefix = "com.demo")
public class DemoConfig {
private Long xValue;
//必须要有非静态的getter和setter方法,不然不会产生metadata, 也不能被注入值
public Long getxValue() {
return xValue;
}
public void setxValue(Long xValue) {
this.xValue = xValue;
}
}
配置 annotationProcessor
spring-boot-configuration-processor 可以根据@ConfigurationProperties注解的类生成相关元数据
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
// 注意如果使用了lombok,这里也需要配置
annotationProcessor("org.projectlombok:lombok")
编译生成Configuration Metadata
执行gradle同步一次,回到DemoConfig, idea 开始提示:
Re-run Spring Boot Configuration Annotation Processor to update generated metadata
然后Build->Rebuild Project
这时候在build目录会生成metadata文件:
这时候去application.properties中写配置就有提示了: