SpringBoot中自定义properties文件配置参数并带有输入提示

说在前面的话

本文实际上是 SpringBoot 官方文档中对原数据部分的搬运加工
SpringBoot 官方文档传送门

1. 创建配置类

在项目中创建一个参数映射类如下

@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;
    }
}

2. 启用配置类

用EnableConfigurationProperties启用配置类。似乎不是必须步骤,但还是以防万一吧

@SpringBootApplication
@EnableConfigurationProperties({MyProperties.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3. 编写提示信息

在项目中按此路径创建一个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"
    }
  ]
}

记得重新编译项目,编译后才生效

4. 编写配置信息

在application.properties 里就可以给配置项赋值了,例如:

user.info.name=张三
user.info.age=18

IDE 如果支持该功能,会根据第3步的元数据进行输入提示(已知 IDEA 完美支持)

然后有需求的地方

@Autowired
MyProperties user;

public void method(){
user.getName();
}

就能取到张三这个值了

猜你喜欢

转载自blog.csdn.net/u014430366/article/details/78865154