三、SpringBoot-配置文件

1、配置文件

  SpringBoot 使用一个全局的配置文件,配置文件名是固定的:

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;



配置文件放在src/main/resources目录或者类路径/config下

2、YAML

YAML(YAML Ain’t Markup Language)



YAML:以数据为中心,比json、xml等更适合做配置文件

(1)、基本语法
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 大小写敏感
(2)、支持的三种数据结构
  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可再分的值

YAML:配置例子:


    server:
     port:8080

XML:


    <server>
        <port>8080</port>
    </server>
(3)、YAML 常用写法

对象(Map):

- 对象的一组键值对用冒号分割。如:user:root
- **冒号后面用<font color="red">空格</font>隔开**
- 用 {} 表示行内写法。如{user: admin}

K:V 方式:


    person:
      lastName: Tom
      age: 22

行内方式:


    person: {lastName: Tom,age: 22}  

数组:

  • 一组连词线(-)开头的行,构成一个数组,[]为行内写法

    list: 
      - lisi
      - wangwu
      - zhangsan

    list: [list,wangwu,zhangsan]

字面量:普通的值(数字、字符串、布尔)

  • K:V : 字面直接来写;
  • 字符串默认不加单引号或双引号:
    • ”” 双引号:不会转义字符串里面的特殊字符,特殊字符作为本身先表达的意思。

    "zhangsan \n lisi"

    输出:

    zhangsan
    lisi    

  • ” 单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据。

    'zhangsan \n lisi'

    输出:

    zhangsan \n lisi  
3、配置文件值注入

配置文件:


      person:
      name: ZhangChao
      age: 22
      boss: false
      birth: 1996/05/17
      maps: {k1: v1,k2: v2}
      list:
        - Lisi
        - ZhangSan
        - Tom
      dog:
        name: Jack
        age: 5

JavaBean:


    /*
        将配置文件中每一个属性的值,映射到这个组件中
        @ConfigurationProperties:告诉 springboot 将这个类中所有的属性值和配置文件中相关配置进行绑定
            prefix:配置文件中哪一个下面的所有属性进行一一映射

            只有当前是 spring 主件,才能使用使用容器提供的 @ConfigurationProperties 功能

     */
    @PropertySource(value = {"classpath:application.yml"})
    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
        private String name;
        private Integer age;
        private Boolean boss;
        private Date birth;

        private Dog dog;
        private Map<String,Object> maps;
        private List<Object> list; 

        ...
        ...
        ...    
    }

    public class Dog {
        private String name;
        private Integer age;
        ...
        ...
    }

测试代码:


    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootQuickApplicationTests {

        @Autowired
        private Person person;

        @Test
        public void contextLoads() {
            System.out.println(person);
        }

    }

我们可以导入配置文件处理器,以后编写配置就有提示了


    <!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐> 
    <dependency>         
        <groupId>org.springframework.boot<groupId>             
        <artifactId>spring‐boot‐configuration‐processor<artifactId>
        <optional>true</optional>              
    </dependency>
4、配置文件占位符
(1)、随机数

    ${random.value}、${random.int}、${random.long}
    ${random.int(10)}、${random.int[1024,65536]} 

(2)、占位符获取之前配置的值,如果没有可以是用 ” : “指定默认值

    person.last‐name=张三${random.uuid} 
    person.age=${random.int} 
    person.birth=2017/12/15 
    person.boss=false 
    person.maps.k1=v1 
    person.maps.k2=14 
    person.lists=a,b,c 
    person.dog.name=${person.hello:hello}_dog 
    person.dog.age=15

5、Profile
(1)、多 Profile 文件

  我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml默认使用application.properties的配置;

(2)、yml支持多文档块方式

  — 三个短横线分割多个文档块


    server:
      port: 8081
    spring:
      profiles:
        active: test1  #指定属于属于哪个环境



    ---
    server:
      port: 8083
    spring:
      profiles: test2


    ---
    server:
      port: 8084
    spring:
      profiles: dev
(3)、激活指定profile
  1. 在配置文件中指定 spring.profiles.active=dev
  2. 命令行:

    java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar spring.profiles.active=dev;

可以直接在测试的时候,配置传入命令行参数。

  1. 虚拟机参数:

    -Dspring.profiles.active=dev

6、配置文件加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文 件

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置

我们还可以通过spring.config.location来改变默认的配置文件位置:

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默 认加载的这些配置文件共同起作用形成互补配置;


    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值