Spring Boot 自定义配置参数绑定并带有配置项 Key 的输入提示

说在前面的话

本文实际上是 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();
}

就能取到张三这个值了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值