说在前面的话
本文实际上是 SpringBoot 官方文档中对原数据部分的搬运加工
SpringBoot 官方文档传送门
目的其实是为了写自定义 starter
时,遵循 spring
的建议,为自定义 starter
配置项提供必要的配置项 key
提示,在使用者在 application.properties
文件里输入的时候。
创建配置类
在项目中创建一个参数映射类如下
@ConfigurationProperties(prefix = "user.info")
public class MyProperties {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age= age;
}
}
激活配置类自动绑定
用EnableConfigurationProperties启用配置类。似乎不是必须步骤,但还是以防万一吧
@SpringBootApplication
@EnableConfigurationProperties({MyProperties.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
编写配置项提示信息
在项目中按此路径创建一个 json
文件
resources/META-INF/spring-configuration-metadata.json
此处会涉及到上一步配置类的路径等问题,请自行确保路径一致,否则第4步也是不会有提示信息的
{
"hints": [
{
"name": "user.info.age",
"values": [
{
"value": 18
},
{
"value": 20
}
]
}
],
"groups": [
{
"sourceType": "org.xavier.config.properties.MyProperties",
"name": "随便乱取",
"type": "org.xavier.config.properties.MyProperties"
}
],
"properties": [
{
"sourceType": "org.xavier.config.properties.MyProperties",
"name": "user.info.Name",
"type": "java.lang.String"
},
{
"sourceType": "org.xavier.config.properties.MyProperties",
"name": "user.info.age",
"type": "java.lang.Integer"
}
]
}
记得重新编译项目,编译后才生效
添加配置项键值对
在 application.properties
里就可以给配置项赋值了,例如:
user.info.name=张三
user.info.age=18
IDE 如果支持该功能,会根据第3步的元数据进行输入提示(已知 IDEA 完美支持)
获取配置项的值
@Autowired
MyProperties user;
public void method(){
user.getName();
}
就能取到张三这个值了