4. Spring Boot 2.x 最佳实践之自定义Properties

本文介绍了Spring Boot 2.x中如何实现自定义Properties的最佳实践,包括添加项目依赖、定义配置类、创建配置文件夹、在dev环境中使用、创建Controller进行测试,以及详细的操作步骤和注意事项。通过学习,可以更方便地管理和使用配置属性,实现类似Spring Boot内置框架的配置效果。
摘要由CSDN通过智能技术生成


Spring Boot 中自定义属性是一个非常有用的技术,可以用来完美替代 @Value注解.

如果不使用这个技术,那么当我们想要使用properties 配置文件中的属性值的时候可能是这样配置的

@Value(value="${spring.application.environment-profile}")
private String currentEnvironmentProfile;

如果只需要获取单个属性值还好,但如果需要获取多个属性,那么维护起来就挺费劲的。

学会这个技术有什么用?

  • 我们知道,在开发企业级应用软件的时候,往往避免不了需要根据自己业务做一些配置开关,以方便尽量在不修改代码的前提下,改变一些代码逻辑。
  • 当然除了可以放到application.properties 里面,也可以将开关静态值中通过页面或者API操作动态修改或者最优的方式将开关放到数据库中进行动态修改。
  • 学会之后,我们就可以像操作对象一样管理这些配置属性。

这篇博文我们就一起来学习下如何定义一个像Spring Boot 中其他框架一样使用的配置。

1.添加项目依赖

  • 添加spring-boot-configuration-processor是自定义属性文件必须的
<!--自定义配置文件必须有此依赖-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
</dependency>

如果不知道lombok ,请查看另外一篇博文Spring Boot 2.x 最佳实践之 lombok集成,装好lombok插件再来看这篇文章。

2. 为自定义配置属性自定义一个类

MyCustomProperties.java

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 自定义属性
 * @author qing-feng.zhao
 * */
@Data
@ConfigurationProperties(prefix="com.xingyun.customize")
public class MyCustomProperties {
    /**
     * 对应的属性就是 com.xingyun.customize.server-address
     */
    private String serverAddress;
    /**
     * 对应的属性就是 com.xingyun.customize.port
     */
    private String port;
    /**
     * 对应属性就是 com.xingyun.customize.username
     */
    private String username;
    /**
     * 对应属性就是 com.xingyun.customize.password
     */
    private String password;
}

值得注意的是

3.创建一个文件夹config 激活自定义配置文件

在config 文件夹下新建CustomPropertiesConfig.java 类

import com.xingyun.springbootwithconfigurationprocessorsample.customize.properties.MyCustomProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * @EnableConfigurationProperties 激活自定义属性扫描文件
 * 多个自定义配置文件以逗号隔开配置
 * @Configuration 注解表明是一个Spring 配置类
 * @author qing-feng.zhao
 * */
@EnableConfigurationProperties({
        MyCustomProperties.class
})
@Configuration
public class CustomPropertiesConfig {
}

4.application-dev.properties 中使用它

application.properties

# config active which one profile,current active application-dev.properties
spring.profiles.active=dev

application-dev.properties

# 基础配置
# 配置当前应用程序的名称,选填 可不配置
spring.application.name=spring-boot-with-custom-properties

# 内嵌容器参数配置
# 配置应用程序的访问端口 选填 不配置默认是8080
server.port=8080
# 配置应用程序的IP,选填
server.address=127.0.0.1
# 配置应用程序的上下文
server.servlet.context-path=/

# Spring Boot 日志
# SpringBoot默认使用的的日志框架是slf4j + Logback
# Logback 没有 FATAL 级别,对应着 ERROR
# 日志级别从低到高
# TRACE < DEBUG < INFO < WARN < ERROR
## 默认配置INFO、WARN、ERROR级别的日志输出到控制台
logging.level.root=info
##配置自己的应用程序日志级别,com.xingyun 是自己应用程序的根包
logging.level.com.xingyun=debug
##设置其他全部的日志等级
logging.level.*=warn

# 自定义配置属性
com.xingyun.customize.server-address=192.168.1.1
com.xingyun.customize.port=5670
com.xingyun.customize.username=root
com.xingyun.customize.password=toor

5.新建一个Controller 测试使用

HomeController.java

import com.xingyun.springbootwithconfigurationprocessorsample.customize.properties.MyCustomProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author qing-feng.zhao
 */
@Slf4j
@RestController
public class HomeController {

    /**
     * Spring 今后推荐使用构造方法注入
     */
    public final MyCustomProperties myCustomProperties;
    public HomeController(MyCustomProperties myCustomProperties) {
        this.myCustomProperties = myCustomProperties;
    }

    /**
     * 拦截首页 / 请求
     * @return
     */
    @GetMapping(value = "/")
    public String homePage(){
        return "Hello World";
    }

    /**
     * 测试自定义属性调用 值得注意的是只能实例方法调用,静态方法不可调用
     * @return
     */
    @GetMapping(value = "/test.do")
    public String testCustomProperties(){
        log.debug("自定义属性测试使用开始");
        log.debug("server address:{}",myCustomProperties.getServerAddress());
        log.debug("port:{}",myCustomProperties.getPort());
        log.debug("username:{}",myCustomProperties.getUsername());
        log.debug("password:{}",myCustomProperties.getPassword());
        log.debug("自定义属性测试使用结束");
        return "test success,please check log from console";
    }
}

6.访问URL

访问请求 http://127.0.0.1:8080/test.do

打印结果如下:
在这里插入图片描述

7. 源码下载

spring-boot-with-configuration-processor-sample

8. 参考文献

@ConfigurationProperties绑定配置信息至Array、List、Map、Bean

本篇完~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客星云

谢谢认可,希望对你的学习有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值