SpringBoot实现多环境配置文件切换教程详解

网友投稿 627 2022-08-17


SpringBoot实现多环境配置文件切换教程详解

目录背景解决方案一、新建配置文件二、 服务调用测试 2.1 新建调用类2.2 使用样例项目三、扩展练习3.1 使用注解标记配置,首先定义一个接口3.2 分别定义俩个实现类来实现它3.3 修改application.yml文件激活配置3.4 新增查询方法3.5 使用一个或多个配置文件及激活标记文件3.6 切换日志文件

背景

很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配置文件或者不同的配置。

解决方案

spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。

一、新建配置文件

注:配置文件优先级(由高到低):bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

此处使用.yml文件格式,在src/main/resources下新建如下文件

application.yml (主配置)

server:

port: 9990

spring:

profiles:

active: dev #选定配置

#自定义默认值

curvar:

context: default.curvar

application-pro.yml (开发配置)

#模拟开发配置

curvar:

context: "开发配置变量"

application-pro.yml(生产配置)

#模拟生产配置

curvar:

context: "生产配置变量"

二、 服务调用测试

2.1 新建调用类

@Slf4j

@RestController

public class IndexController {

@Value("${curvar.context}")

private String cusvar;

/**

* .

* 使用哪一个配置

*

* @return

*/

@RequestMapping("/test")

public String test() {

log.debug("使用:[{}]", cusvar);

return "使用配置: " + cusvar;

}

}

2.2 使用样例项目

打开浏览器输入:http://localhost:9990/test

三、扩展练习

3.1 使用注解标记配置,首先定义一个接口

public interface Connector {

String configure();

}

3.2 分别定义俩个实现类来实现它

import org.springframework.context.annotation.Profile;

import org.springframework.stereotype.Component;

@Component

@Profile("pro-db")//标记文件,环境切换

public class ProConnector implements Connector {

@Override

public String configure() {

return "pro生产标记文件...";

}

}

import org.springframework.context.annotation.Profile;

import org.springframework.stereotype.Component;

@Component

@Profile("dev-db")//标记文件,环境切换

public class DevConnector implements Connector {

@Override

public String configure() {

return "dev开发标记文件...";

}

}

3.3 修改application.yml文件激活配置

spring:

profiles:

#active: dev #选定配置

active: pro-db #选定配置激活标记文件

3.4 新增查询方法

@Autowired

private Connector connector; //注入

/**

* .

* 使用哪一个被标记文件

*

* @return

*/

@GetMapping("/proFile")

public String proFile() {

log.debug("使用配置文件:[{}]", connector.configure());

return connector.configure();

}

打开浏览器输入:htquzFijtp://localhost:9990/proFile

3.5 使用一个或多个配置文件及激活标记文件

修改application.yml文件,进行属性叠加

spring:

profiles:

include: pro,dev-db #指定配置文件及激活标记文件

#active: pro-db #选定标记文件

新增查询方法

/**

* .

* 使用哪一个配置文件及标记文件

*

* @return

*/

@GetMapping("/include")

public String include() {

return String.format("使用配置文件:%s,使用标记文件:%s", cusvar, connector.configure());

}

打开浏览器输入:http://localhost:9990/include

3.6 切换日志文件

新建logback文件

logback-pro.yml (生产日志)

logback

debug

%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} [%file : %line] - %msg%n

${log.path}

${log.path}.%d{yyyy-MM-dd}.%i.gz

100MB

修改application.yml文件,配置日志属性

spring:

profiles:

#include: pro,dev-db #指定配置文件及激活标记文件

#active: pro-db #选定标记文件

active: pro #指定配置文件

#日志

logging:

config: classpath:logback-${spring.profiles.active}.xml #本地IDEA启动配置

#config: config/logback-${spring.profiles.active}.xml # java -jar 包启动配置

项目启动访问接口,控制台打印日志

友情提示:jar运行指定配置

java -jar xxx.jar --spring.profiles.active=dev #指定dev配置

java -jar xxx.jar --server.port=9090 #指定启动端口

以上就是SpringBoot实现多环境配置文件切换教程详解的详细内容,更多关于SpringBoot配置文件切换的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java数据结构之平衡二叉树的实现详解
下一篇:Spring AOPr如何打通两个切面之间的通信
相关文章

 发表评论

暂时没有评论,来抢沙发吧~