目录

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 生产环境




springboot 匹配多级地址_springboot 匹配多级地址


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

springboot 匹配多级地址_SpringBoot配置文件_02

springboot 匹配多级地址_SpringBoot配置文件_03

3.外部参数(命令行参数)

 1.Idea示例,在启动配置中,输入命令行,指定读取配置文件:

--spring.profiles.active=dev

springboot 匹配多级地址_SpringBoot配置文件_02

springboot 匹配多级地址_SpringBoot多配置文件_05

 2.cmd运行示例

springboot 匹配多级地址_SpringBoot配置文件_06

双击package进行打包,

springboot 匹配多级地址_SpringBoot多配置文件_07

 在当前目录按住shift键+鼠标右键,打开PowerShell命令窗口,输入如下命令:

java -jar .\demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

springboot 匹配多级地址_SpringBoot配置文件_08