02SpringBoot配置文件详解

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

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

 可以通过修改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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值