一、需求
你是否也想实现在SpringCloud工程的配置文件,比如 application.yaml 文件中可以实现类似代码提示的功能提示自己所自定义的配置参数,包括参数的描述,参数的默认值等信息?如下图:
比方说我们想实现的自定义参数配置效果如下:
二、准备
1. 依赖添加
要让我们自定义好的配置参数在 yaml 文件中能够正常提示,我们需要在工程中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
2. 编写自定义配置类
package com.demo.prop;
import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 自定义配置类.
*
* @author linmu
*/
@Data
@ToString
@ConfigurationProperties(prefix = "linmu.prop") // prefix表示该配置类中的配置参数的统一前缀
public class DemoProperties {
/**
* 类型枚举.
*/
private TypeEM type; // 枚举,yaml中会自动提示可选的值
/**
* 位数.
*/
private int maxSize = 1; // 有默认值,maxSize在SpringCloud2.0的yaml文件中对应的配置项是 max-size
/**
* 其他参数集合.
*/
private Other other = new Other(); // 参数集合,可以使用内部静态类进行统一管理分类
@Data
@ToString
public static class Other {
/**
* 名称.
*/
private String name;
/**
* 是否可用.
*/
private Boolean enable = true;
}
}
3. 构建工程
build 工程后,在工程的 target/classes/META-INF 路径下会生成 spring-configuration-metadata.json,这个文件是支持配置自动提示所必需的。
现在打开工程的yml文件,敲下配置的关键词,即可看到提示。
三、配置类使用
1. 通过注解进行使用
在需要使用到配置参数的类上添加以下注解,然后注入对应的参数类即可。
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@EnableConfigurationProperties({DemoProperties.class})
2. 通过Bean进行使用
如下定义参数的Bean:
/**
* 注入参数Bean.
*
* @return demo参数bean对象
*/
@Bean
public DemoProperties demoProperties() {
return new DemoProperties();
}
在需要使用到的类中注入该参数类即可使用
四、附录
作者有话说:如果有幸帮助到你,麻烦给个赞,给个收藏,给个关注,感谢!你的赞,收藏和关注是我的动力源泉