本文简介🎨
随着咱们的演示性能越来越多,外面的配置也越来越多,咱们怎么更好的来治理这些配置呢?
理论我的项目中,咱们必定会有开发环境、测试环境、生产环境,咱们又该怎么便捷的配置这些环境呢?
咱们应该怎么自定义本人的一些配置呢?该怎么应用呢?
带着这些问题,咱们一起来探讨一下🧐🧐🧐
性能实现🧐
配置分模块治理
在应用过程中,咱们有很多配置,比方 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