首页 > 其他分享 >SpringBoot配置文件中spring

SpringBoot配置文件中spring

时间:2023-01-04 15:33:57浏览次数:59  
标签:SpringBoot 配置文件 spring 配置 application active properties

SpringBoot配置文件中spring.profiles.active配置详解

现象:

在开发的时候测试和生产配置不一样 每次加配置都需要更新生产

原因:

不方便

解决:

添加多套配置

知识库:

1、多环境配置
我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。

对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

application.properties:默认配置
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

如:spring.profiles.active=test就会加载application-test.properties配置文件内容
下面,以不同环境配置不同的服务端口为例,进行样例实验。

针对各环境新建不同的配置文件application-dev.properties、application-test.properties、application-prod.properties 在这三个文件均都设置不同的server.port属性,如:dev环境设置为8080,test环境设置为9090,prod环境设置为80、application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置。

如:spring.profiles.active=hello-world,sender,dev 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application-dev.properties的配置为准。

补充:如果是application.yml,application.properties配置文件同时存在,会以application.properties配置文件为准,因为后加载的配置文件中重复的配置项会覆盖先加载的配置项。两者中如果用spring.profiles.active指定其他配置文件,最终重复项以spring.profiles.active指定的配置文件为准。

2.通过@Profile注解匹配active参数,动态加载内部配置
@Profile可接受一个或者多个参数,例如:

@Profile({"tut1","hello-world"})
@Configuration
public class Tut1Config{
@Bean
public Queue hello(){
return new Queue("hello");
}
@Profile("receiver")
@Bean
public Tut1Receiver receiver(){
return new Tut1Receiver();
}
@Profile("sender")
@Bean
public Tut1Sender sender(){
return new Tut1Sender();
}

当 spring.profiles.active=hello-world,sender 时,该配置类生效,且第一个@Bean和第三个@Bean生效
如果spring.profiles.active=hello-world ,则该配置文件生效,第一个@Bean生效
如果spring.profiles.active=sender ,该配置文件未生效,所以下面的@Bean都不会生效
如此,当我们的项目需要运行在不同环境,特异化配置又比较多,该注解的优势是相当明显的!

参考文章链接
1、https://juejin.cn/post/6847902221720518664

标签:SpringBoot,配置文件,spring,配置,application,active,properties
From: https://www.cnblogs.com/fightmonster/p/17024970.html

相关文章

  • spring5框架
    概述:Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分:IOC和AOPIOC:控制反转,把创建对象过程交给Spring进行管理AOP:面向切面......
  • springboot 整合activiti
    importlombok.Data;importnet.sf.json.JSONObject;importjava.io.Serializable;importjava.util.Date;/***流程日志扩展类*@authorhxy*@emailhuangx......
  • STS(Spring Tool Suite)使用小技巧记录
    偶尔有些jar包无论如何都无法用maven下载,(例如我正在用的kaptcha)只好自己手动下载了以后再添加。这个时候记得修改以下地方。自动的VMware服务器无法启动,报错如下图解决办法,......
  • STS(Spring Tool Suite)使用前准备
    好了,卖了两个月冰激凌,现在又回来做程序员了。发现好多东西已经忘了。所以拿csdn当个记事本,方便我也方便其他和我有同样问题的人。现在打算用springmvc来做些东西,工具就用st......
  • java spring jar包下载
    想学习一下javaspring,真是不知道怎么来着手。在网上查了一下eclipse里建spring工程的方法:1、创建Java项目转到 文件菜单- 新建- 项目- Java项目。输入项目名称,例如......
  • spring mobile简单试用
    springmobile是spring新推出的一个用于支持移动浏览的小框架,用起来很简单,和springmvc结合也很方便。首先建立一个springmvc的工程然后,在pom.xml中添加springmobile的支......
  • Spring Cloud GateWay基于nacos如何去做灰度发布
    本文基于ReactiveLoadBalancerClientFilter使用RoundRobinLoadBalancer灰度发布灰度发布,又称为金丝雀发布,是一种新旧版本平滑发布的方式。在上面可以对同一个API进行两个版......
  • spring boot改2.5.9,Junit4升级成Junit5
    spring-boot从2.2.10.RELEASE改到2.5.9时,发现mvntest,单元测试没有跑,百度一圈,发现  springboot2.2之前使用的是Junit4  springboot2.2之后使用的是Junit5......
  • springboot连接sqlserver报错
    报错1:TheserverselectedprotocolversionTLS10isnotaccepted  解决:找到Java的java.security文件,并删除“TLSv1,TLSv1.1,3DES_EDE_CBC”,这三个参数:  报......
  • spring-boot:run 中文乱码
    <plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId>......