目录
1、配置文件分类
2、配置文件语法格式
3、配置文件优先级
4、读取配置文件的方式
1.@Value
2) Environment
3) @ConfigurationProperties
5、Profile多文件配置
1.profile多文件配置方式
1.多profile文件方式
2.yml多文档方式
1.profile激活方式
1.配置文件
2.外部参数(虚拟机参数)
3.外部参数(命令行参数)
1、配置文件分类
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认约定的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置,配置文件路径为src/main/resources下,application是配置文件默认名称。
2、配置文件语法格式
application.properties(无需讲解,传统常用的)
service.port=8080
application.yml、application.yaml
service:
port: 8080
#########对象
person1:
name: ywy #字段
age: 20
#行内写法
person2: {name: ywy,age: 20}
#########数组
adress1:
- 北京
- 上海
#行内写法
adress2: [北京,上海]
#########纯量
msg1: '初见只一回,\n 余生来世都幸会' #不会识别转义字符,会原样输出
msg2: '如果结果不如你所愿,\n 就在尘埃落定前奋力一搏' #会识别转义字符
#########参数引用
name: weny.yang
person:
myname: ${name} #输出为weny.yang
YAML语法:
1.大小写敏感
2.数据值前边必须有空格,作为分隔符
3. 使用缩进表示层级关系
4. 缩进时不允许用Tab键,只许使用空格(各系统Tab对应的空格数目可能不同,导致层次混乱)
5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
6. # 表示注释,从这个字符一直到行尾,都会被解析器忽略
相比较properties配置语法,YAML是一种更容易被人类阅读,并且容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁,YAML文件的扩展名可以使用.yml或者.yaml。
3、配置文件优先级
在同一级目录下优先级为:properties > yml > yaml
不同文件配置了相同的属性,则高优先级的配置会覆盖低优先级的配置,不同的配置属性会各自被加载。
4、读取配置文件的方式
1.@Value
小范围取值的话,直接在需要的地方使用该注解即可,简单方便,语法如下:
@Value("${person1.name}") //import org.springframework.beans.factory.annotation.Value;
private String name;
2) Environment
项目启动时,配置文件中的数据会封装到org.springframework.core.env.Environment类中,在需要中的地方注入该对象,调用该类继承的org.springframework.core.env.PropertyResolver接口中的 String getProperty(String var1)方法获取值。
@Autowired
private Environment ev;//import org.springframework.core.env.Environment;
String value = ev.getProperty("person.myname");
3) @ConfigurationProperties
使用配置处理器,解析配置文件,将配置封装到POJO实体类中,依赖和实体示例如下:
package com.example.demo.domain;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
//1.将当前对象放入Spring容器管理
@Component
//2.根据前缀注入指定区域的数据,内部属性必须和配置一一对应
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
get/set...
}
5、Profile多文件配置
开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦,profile功能就是来进行动态配置切换的。
1.profile多文件配置方式
1.多profile文件方式
提供多个配置文件,每个代表一种环境。
• application-dev.properties/yml 开发环境
• application-test.properties/yml 测试环境
• application-prd.properties/yml 生产环境
2.yml多文档方式
在yml中使用 --- 分隔不同区域配置(当前语法是SpringBoot2.5.4版本,其他版本不一样):
---
spring:
config:
activate:
on-profile: dev #给当前区域命名
server:
port: 8081
---
spring:
config:
activate:
on-profile: test
server:
port: 8082
---
spring:
config:
activate:
on-profile: prd
server:
port: 8083
1.profile激活方式
1.配置文件
#指定读取不同环境的配置文件
spring:
profiles:
active: dev
2.外部参数(虚拟机参数)
Idea示例,在启动配置中,修改虚拟机参数,指定读取配置文件:
-Dspring.profiles.active=dev
3.外部参数(命令行参数)
1.Idea示例,在启动配置中,输入命令行,指定读取配置文件:
--spring.profiles.active=dev
2.cmd运行示例
双击package进行打包,
在当前目录按住shift键+鼠标右键,打开PowerShell命令窗口,输入如下命令:
java -jar .\demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev