[编程] 手把手教你如何优雅编写自己自定义在SpringCloud中配置参数类

一、需求

你是否也想实现在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();
}

在需要使用到的类中注入该参数类即可使用

四、附录

Demo源码工程下载

作者有话说:如果有幸帮助到你,麻烦给个赞,给个收藏,给个关注,感谢!你的赞,收藏和关注是我的动力源泉 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值