1.自定义配置
最近在做Spring Boot相关的项目,项目中application.properties自定义配置信息是会经常用到的,自定义配置并不困难,有非常多的样例可以参考,例如:
@ConfigurationProperties("example.service")
@Component
public class WrapServiceProperties {
private String prefix;
private String suffix;
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
}
经过以上注解配置(@Component是用于申明Bean,@ConfigurationProperties("example.service")申明这是一个自定义配置类,并且这个自定义类的配置前缀是example.service。
完成了以上工作,我们就可以在application.properties中添加我们的自定义配置
example.service.prefix=###
example.service.suffix=@@@
配置信息的名字注意和类属性保持一致,系统启动时spring就会将配置信息装配到我们的bean中。一切似乎非常完美,但是!但是!
这时候我们去IDEA编辑一下我们的配置,发现!TMD居然你不提示自定的配置,看不起我们自定义配置???
application.properties
Spring内部的配置信息是都可以提示的,如果不能提示,使用的时候会非常不友好,敲配置信息容易出错,特别是你如果自定义starter给其他人用,别人完全无法知道哪些是可配置的信息。那么怎么去配置可提示的配置信息?
2.IDEA可提示的自定义配置
要让IDEA识别你自己的配置信息需要在maven中添加一个类库
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
或者gradle
dependencies {
optional "org.springframework.boot:spring-boot-configuration-processor"
}
compileJava.dependsOn(processResources)
这个类库会在编译时生效,作用就是生成自定义配置的元信息,IDEA提示会依赖这个文件,在添加这个类库后,我们尝试build一次项目
项目构建结果
spring-configuration-metadata.json即是自动生成的元信息文件,实际就是一个json
注:spring.factories文件可以不管,并不是自定义配置生成的,这个是自定义starter需要用到的文件,后边我会讲到。
{
"hints": [],
"groups": [
{
"sourceType": "wyx.practice.wrap.config.WrapServiceProperties",
"name": "example.service",
"type": "wyx.practice.wrap.config.WrapServiceProperties"
}
],
"properties": [
{
"sourceType": "wyx.practice.wrap.config.WrapServiceProperties",
"name": "example.service.prefix",
"type": "java.lang.String"
},
{
"sourceType": "wyx.practice.wrap.config.WrapServiceProperties",
"name": "example.service.suffix",
"type": "java.lang.String"
}
]
}
当然,我们不关心文件内部结构,想知道Json含义,有兴趣可以看看spring官方文档
这时候,我们再去application.properties编辑一下,发现已经可以提示了
application.properties
相关文章:
Spring Boot 自定义配置详解(二)
网友评论