本文简介

随着咱们的演示性能越来越多,外面的配置也越来越多,咱们怎么更好的来治理这些配置呢?

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

咱们应该怎么自定义本人的一些配置呢?该怎么应用呢?

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

性能实现

配置分模块治理

在应用过程中,咱们有很多配置,比方mysql配置、redis配置、mybatis-plus、调用第三方的接口配置等等...

咱们当初都是放在一个大而全的配置外面的,如果咱们想依据性能分为不同的配置文件治理,让配置更加清晰,应该怎么做呢?

咱们能够应用spring.profiles.include: *,*,*来蕴含其余的配置

留神:创立的配置要用application-开始,例如mysql的,咱们能够配置成application-mysql这样。

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

咱们在resources目录下创立application-xxf.yml文件,代码如下

xxf:  name: 笑小枫-xxf  site: 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 <a href="https://www.xiaoxiaofeng.com">https://www.xiaoxiaofeng.com</a> */@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 <a href="https://www.xiaoxiaofeng.com">https://www.xiaoxiaofeng.com</a> */@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

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

  • 蕴含配置的测试用例

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

  • 用类对立应用配置的测试用例

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

更多配置管理工具

如果咱们是繁多我的项目,在我的项目中治理配置还是能够的,但如果咱们有十个,一百个我的项目,,如果咱们有业余的运维人员,或者生产的配置想要隔离开,这样咱们再在我的项目中治理配置就不适合了。

咱们我的项目能够整合一些其余的工具进行配置管理,例如阿里的nocas,携程的apollo等等都是很好的开源的配置管理系统,咱们能够间接应用,这里不开展介绍,感兴趣的小伙伴能够浏览上面的文章。

对于笑小枫

本章到这里完结了,喜爱的敌人关注一下我呦,大伙的反对,就是我保持写下去的能源。

微信公众号:笑小枫

笑小枫集体博客:https://www.xiaoxiaofeng.com

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

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