【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置
创始人
2024-02-08 05:33:10

本文简介🎨

随着我们的演示功能越来越多,里面的配置也越来越多,我们怎么更好的来管理这些配置呢?

实际项目中,我们肯定会有开发环境、测试环境、生产环境,我们又该怎么便捷的配置这些环境呢?

我们应该怎么自定义自己的一些配置呢?该怎么使用呢?

带着这些问题,我们一起来探讨一下🧐🧐🧐

功能实现🧐

配置分模块管理

在使用过程中,我们有很多配置,比如mysql配置、redis配置、mybatis-plus、调用第三方的接口配置等等…

我们现在都是放在一个大而全的配置里面的,如果我们想根据功能分为不同的配置文件管理,让配置更加清晰,应该怎么做呢?

我们可以使用spring.profiles.include: *,*,*来包含其他的配置

注意:创建的配置要用application-开始,例如mysql的,我们可以配置成application-mysql这样。

包含多个配置,用英文逗号(“,”)分割即可

我们在resources目录下创建application-xxf.yml文件,代码如下👇

xxf:name: 笑小枫-xxfsite: https://www.xiaoxiaofeng.com

然后在application.yml配置以下代码即可

spring:profiles:include: xxf

因为功能单一,且相互依赖,最后统一写测试代码吧

配置多个环境

像mysql、redis不同环境的配置肯定不一样,不想每次打包发布前都修改一次配置,应该怎么快速的切换环境呢?

我们可以使用spring.profiles.active: *来指定项目启动使用的环境。

我们来创建两个测试的配置

application-dev.yml

xxf:desc: 这是一个开发的环境

application-prod.yml

xxf:desc: 这是一个生产的环境

然后在application.yml配置中使用spring.profiles.active: *来指定环境即可。

spring:profiles:active: dev

因为功能单一,且相互依赖,最后统一写测试代码吧

自定义配置使用

像上文中,xxf.name``xxf.desc都是我们自定义的配置,那么我们在项目中如何快速的使用呢?

最简单的使用注解@Value("${xxf.name}")这样就可以了。

如果多个配置可能会经常使用,我们想统一管理怎么办,可以创建一个类,把它们统一定义在类中,然后在类上使用@Configuration注解就可以了。

对于同一组的配置,我们还可以使用@ConfigurationProperties(prefix = "xxf")指定前缀。像下面这样👇

package com.maple.demo.config.bean;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** @author 笑小枫* @date 2022/7/22* @see https://www.xiaoxiaofeng.com*/
@Data
@Configuration
@ConfigurationProperties(prefix = "xxf")
public class XxfProperties {private String name;private String site;
}

实例测试✌

上面说了那么多,让我们来测试一下吧。

controller包下编写测试的类TestConfigController.java

package com.maple.demo.controller;import com.maple.demo.config.bean.XxfProperties;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author 笑小枫* @date 2022/7/22* @see https://www.xiaoxiaofeng.com*/
@Slf4j
@RestController
@RequestMapping("/example")
@RequiredArgsConstructor
@Api(tags = "实例演示-application文件配置")
public class TestConfigController {/*** 通用-不区分环境*/@Value("${xxf.name}")private String name;@Value("${xxf.site}")private String site;/*** 区分环境*/@Value("${xxf.desc}")private String desc;/*** 同组配置,可以使用类的形式注入*/private final XxfProperties xxfProperties;@ApiOperation(value = "不同环境的配置测试用例")@GetMapping("/configEnv")public String chooseEnv() {return desc;}@ApiOperation(value = "包含配置的测试用例")@GetMapping("/commonEnv")public String commonEnv() {return name + site;}@ApiOperation(value = "用类统一使用配置的测试用例")@GetMapping("/configClass")public String configClass() {return xxfProperties.getName();}}

分为三种场景

  • 不同环境的配置测试用例

​ 配置dev环境,浏览器访问http://localhost:6666/example/configEnv

image-20220817153538206

​ 切换成prod环境,重启项目,浏览器再次访问http://localhost:6666/example/configEnv

image-20220817153714594

  • 包含配置的测试用例

    浏览器访问http://localhost:6666/example/commonEnv

image-20220817153802762

  • 用类统一使用配置的测试用例

    浏览器访问http://localhost:6666/example/configClass

image-20220817154030857

更多配置管理工具👀

如果我们是单一项目,在项目中管理配置还是可以的,但如果我们有十个,一百个项目,,如果我们有专业的运维人员,或者生产的配置想要隔离开,这样我们再在项目中管理配置就不合适了。

我们项目可以整合一些其他的工具进行配置管理,例如阿里的nocas,携程的apollo等等都是很好的开源的配置管理系统,我们可以直接使用,这里不展开介绍,感兴趣的小伙伴可以阅读下面的文章。

SpringBoot整合Nacos详细教程

Apollo微服务配置中心详解

关于笑小枫💕

本章到这里结束了,喜欢的朋友关注一下我呦,大伙的支持,就是我坚持写下去的动力。

微信公众号:笑小枫

笑小枫个人博客:https://www.xiaoxiaofeng.com

CSDN:https://zhangfz.blog.csdn.net

本文源码:https://github.com/hack-feng/maple-demo

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...