1配置文件简介

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

SpringBoot默认从Resource目录加载自定义配置文件。application.properties是键值对类型(一直在用)。application.yml是SpringBoot中一种新的配置文件方式。

  1. 默认配置文件名称:application
  2. 在同一级目录下优先级为:properties>yml > yaml

例如:配置内置Tomcat的地址和端口

properties:

server.port=8080
server.address=127.0.0.1

xml

<server>
 <port>8080</port>
 <address>127.0.0.1</address>
</server>

yml/yaml:

server:
 port: 8080
 address: 127.0.0.1

2yml配置文件

YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚本语言交互。可以支持各种编程语言(C/C++、Ruby、Python、Java、Perl、C#、PHP)。以数据为核心,比XML更简洁。扩展名为.yml或.yaml;XML ( Markup Language可扩展标记语言 )
官网地址:https://yaml.org/

语法:

  • 大小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • ''#" 表示注释,从这个字符一直到行尾,都会被解析器忽略。
  • 数组和集合使用  “- ” 表示数组每个元素

yaml案例



对象(map):键值对的集合 :


person:
 name: lisi
 age: 31
 addr: beijing
# ⾏内写法
person: {name: haohao, age: 31, addr: beijing}



数组:⼀组按次序排列的值



address:
 - beijing
 - shanghai
 - guangzhou
# ⾏内写法
# ⾏内写法
address: [beijing,shanghai,guangzhou]



集合:



#集合中的元素是对象形式
animals:
 - name: dog
 age: 2
 - name: tomcat
 age: 3
 - name: pig
 age: 5



纯量:单个的、不可再分的值



msg1: 'hello \n world'  # 单引忽略转义字符
msg2: "hello \n world"  # 双引识别转义字符



配置引用:



name: lisi
person:
 name: ${name}



所有写法:



person:
 name: lisi
 age: 31
 city: beijing
 address:
 - beijing
 - shanghai
 - guangzhou
 animals:
 - name: dog
 age: 2
 - name: tomcat
 age: 3
 - name: pig
 age: 5

修改项目配置时,默认配置查询方式(搜索栏搜索默认配置值)

spring boot需要哪些包 spring boot有哪些配置文件_数组

可以通过修改application.properties或者application.yml来修改SpringBoot的默认配置

转换网站

 在线yaml转properties-在线properties转yaml-ToYaml.com

3获取配置文件数据

方式1:@Value

#获取普通配置
   @Value("${name}")
    private String name;
    #获取对象属性
    @Value("${person.name}")
    private String name2;
   	#获取数组
    @Value("${address[0]}")
    private String address1;
  	#获取纯量
    @Value("${msg1}")
    private String msg1;

使用springframework中的Evironment类,可以把application.yml中的文件数据封装的Evironment类中,简化代码

@Autowired
 private Environment env;

System.out.println(env.getProperty("person.name"));

System.out.println(env.getProperty("address[0]"));

方式2:

@ConfigurationProperties

注意:prefix一定要写

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;
    private int age;
    private String[] address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String[] getAddress() {
        return address;
    }

    public void setAddress(String[] address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4多环境配置文件

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发dev、测试test、生产pro等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置⽂件,那么非常麻烦。profile功能就是用来完成不同环境下进行动态配置切换的

  1. profile配置方式
    多profile文件方式:提供多个配置文件,每个代表一种环境。
    application-dev.properties/yml 开发环境
    application-test.properties/yml 测试环境
    application-pro.properties/yml 生产环境
    yml多文档方式:

在yml中使用 --- 分隔不同配置

  1. profile激活方式
  • 配置文件: 再配置文件中配置:spring.profiles.active=dev
  • 虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
  • 命令行参数:java –jar xxx.jar --spring.profiles.active=dev