Spring Boot - 配置文件

本文介绍SpringBoot中配置的外部化特性,包括如何使用properties及YAML文件进行配置、多环境配置的支持以及如何通过命令行参数和环境变量进行配置。同时介绍了如何在application.properties文件中实现参数间的引用和设置随机值。

原文 另见

Spring Boot允许将配置外部化(externalize),这样你就能够在不同的环境下使用相同的代码。你可以使用properties文件,YAML文件,环境变量和命令行参数来外部化配置。使用@Value注解,可以直接将属性值注入到beans中,然后通过Spring的Environment抽象或通过@ConfigurationProperties绑定到结构化对象来访问。

Application属性文件

SpringApplication将从以下位置加载application.properties文件,并把它们添加到Spring Environment中:(内部覆盖外部)

1. 当前目录下的/config子目录。

2. 当前目录。

3. classpath下的/config包。

4. classpath根路径(root)。

参数间的引用、配置随机值

当使用application.properties定义的属性时,Spring会先通过已经存在的Environment查找该属性,所以你可以引用事先定义的值:可以使用该技巧为存在的Spring Boot属性创建'短'变量,具体参考Section 69.4, “Use ‘short’ command line arguments”

com.didispace.blog.name=程序员DD
com.didispace.blog.title=Spring Boot 教程
#参数间的引用
com.didispace.blog.desc=${com.didispace.blog.name}正在努力写${com.didispace.blog.title}
#使用随机数
com.didispace.blog.test1=${random.int[10,20]}

命令行属性

命令行中输入:java -jar xxx.jar --server.port=8888

屏蔽命令行属性。设置 SpringApplication.setAddCommandLineProperties(false)。

多环境配置

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

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

设置默认加载哪个文件,可以在application.properties文件中通过spring.profiles.active属性来设置。如:

spring.profiles.active=dev

通过命令行激活其它环境中的配置:

执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为xxx,也就是测试环境的配置(test)
执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为xxx,也就是生产环境的配置(prod)

 

注意:解决 idea中读取配置文件乱码

125303_K4m8_3053700.png

转载于:https://my.oschina.net/lemos/blog/828691

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值