我们的一个应用,开发上线,需要一定的流程,比如需要先在测试环境中进行测试,测试环境中有它的一整套配置,如MySQL、Redis、MQ等。
创新互联主要从事成都做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务柘荣,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
测试环境测试完毕,我们会在预发环境再度测试,最后再上线,即线上环境。每个环境都有他们自己独有的一套配置,而代码逻辑都是一样,就是环境配置不一样而已。
如何低耦合地分离各个环境的配置,就是我们所追求的,下面阐述下SpringBoot中的方案。
我写了个demo,下面是它的代码结构:
1.业务代码
下面假定以下是业务代码,主要就是从配置文件中读取env的值,并返回出去:
- package com.example.configenv.controller;
- 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;
- @RestController
- @RequestMapping("/")
- public class EnvController {
- @Value("${env}")
- private String env;
- @GetMapping("/env")
- public String showEnvValue() {
- return env;
- }
- }
2.配置文件
配置文件中,application.yml是一个主配置,即无论如何,都会被加载的,类似SSM时代的spring-config.xml。里边的逻辑,就一个active,就是指定配置环境:
- spring:
- profiles:
- active: dev
对应其他其他环境的配置,它们有2个点,一个是环境名称on-profile,一个对应环境下的值env。
- SpringBoot中根据环境加载不同的配置的方案
- 原创2021-07-26 17:31·IT小村
- 前言
- 我们的一个应用,开发上线,需要一定的流程,比如需要先在测试环境中进行测试,测试环境中有它的一整套配置,如MySQL、Redis、MQ等。
- 测试环境测试完毕,我们会在预发环境再度测试,最后再上线,即线上环境。每个环境都有他们自己独有的一套配置,而代码逻辑都是一样,就是环境配置不一样而已。
- 如何低耦合地分离各个环境的配置,就是我们所追求的,下面阐述下SpringBoot中的方案。
- 方案
- 我写了个demo,下面是它的代码结构:
- SpringBoot中根据环境加载不同的配置的方案
- 1.业务代码
- 下面假定以下是业务代码,主要就是从配置文件中读取env的值,并返回出去:
- package com.example.configenv.controller;
- 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;
- @RestController
- @RequestMapping("/")
- public class EnvController {
- @Value("${env}")
- private String env;
- @GetMapping("/env")
- public String showEnvValue() {
- return env;
- }
- }
- 2.配置文件
- 配置文件中,application.yml是一个主配置,即无论如何,都会被加载的,类似SSM时代的spring-config.xml。里边的逻辑,就一个active,就是指定配置环境:
- spring:
- profiles:
- active: dev
- 对应其他其他环境的配置,它们有2个点,一个是环境名称on-profile,一个对应环境下的值env。
- application-dev.yml
- spring:
- config:
- activate:
- on-profile: dev
- env: '测试环境'
application-online.yml
- spring:
- config:
- activate:
- on-profile: pre
- env: '预发环境'
application-online.yml
- spring:
- config:
- activate:
- on-profile: online
- env: '线上环境'
当我的主配置文件为如下时,即指定环境为dev测试环境
- spring:
- profiles:
- active: dev
http://localhost:8080/env
可以看到,加载的是application-dev.yml的配置
而当我的主配置文件是如下时,即加载的是online线上环境
- spring:
- profiles:
- active: online
http://localhost:8080/env
可以看到,加载的是application-online.yml的配置。
部署应用的时候,我们只需要覆盖application.yml即可,就可以在测试环境、预发环境、线上环境等环境,加载他们对应的配置。
本文题目:SpringBoot中根据环境加载不同的配置的方案
网页链接:http://www.shufengxianlan.com/qtweb/news20/299570.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联