SpringBoot之多Profile配置

近来在利用闲暇时间巩固下SpringBoot的基本知识,然后自己也做一些笔记,整理下当时所学知识,后面就干脆写到这里来了。

多Profile配置文件
在SpringBoot主配置文件编写的时候,文件名可以是application-{profile}.properties/yml。

默认使用的是application.properties配置文件的配置。

1 applicaiton.properties 2 application-dev.properties 3 application-test.properties 4 application-prod.properties

激活指定配置文件
1、主配置文件中指定激活的profile

如果是properties格式的配置文件,那么可以在主配置文件中这样指定激活的profile:

spring.profiles.active = dev
如果是yml格式的配置文件,你可以用“—”来划分文档块,每个文档块都被看作是一个profile,你可以在主文档块中指定生效的profile:

复制代码
1 server:
2 prot: 8081
3 spring:
4 profiles:
5 active: dev # 指定激活哪个配置文件
6
7 # yml格式配置文件中,用三个横线来区分文档块
8 # 第一个文档块表示主文档块,并同时指定后续生效的是哪个文档块
9
10 —
11 # 第二个文档块
12 server:
13 port: 8082
14 spring:
15 profiles: dev # 声明文档块类型
16
17 —
18 # 第三个文档块
19 server:
20 port: 8083
21 spring:
22 profiles: dev
复制代码
2、命令行激活

在实际生产环境中直接使用命令行启动项目,启动的同时可以指定激活的profile:

java -jar --spring.profiles.active=dev my-spring-boot-app.1.0.0.jar
3、设置虚拟机参数激活

同样,你可以通过设置Java虚拟机参数的方式来激活指定profile:

[vm options:] -Dspring.profiles.action=dev
IDEA编辑器设置:

命令行指定的方式和虚拟机参数设置的方式指定,都可以在IDEA的运行设置中进行配置,如下图:

加载位置与顺序
SpringBoot启动会扫描以下位置的application.properties/yml文件作为spring boot的默认配置文件:

file:./config/
file:./
classpath:/config/
classpath:/
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容,并形成互补配置;当然,我们也可以通过spring.config.location来改变默认配置。

上面的:

file: 指当前项目根目录
classpath: 指当前项目的resources目录
给出一个图例:

注意:maven打包是不能把src外面的两个application.properties文件打到jar包里的。

在项目打包好之后,我们可以通过命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定配置文件和默认加载的这些配置文件会共同生效,并形成互补配置。

这在运维的时候很有用,因为可以通过命令行的方式指定生效的配置文件,较为灵活。

外部配置
SpringBoot还支持多种外部配置方式,生效优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置形成互补配置。

命令行参数
来自java:comp/env的JNDI属性
Java系统属性(System.getProperties())
操作系统环境变量
RandomValuePropertySource配置的ramdom.*属性值
jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包外部的application.properties或application.yml(不带spring.profile)配置文件
jar包内部的application.properties或application.yml(不带spring.profile)配置文件
@Configuration注解类上的@PropertySource
通过SpringApplication.setDefaultProperties指定的默认属性
其实在官网有17种这样的配置说明,可以从下面进入:

重点关注上面列举的1、6、7、8、9这几项,生效的配置文件,都是由jar包外向jar包内进行寻找的,优先加载带profile,再加载不带profile的。比如有个application.properties的配置文件和xxx.jar放置在同一个目录,那么项目启动时一定是先加载这个application.properties文件,再去加载xxx.jar里面的配置文件的。
深圳网站建设www.sz886.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值