[学习笔记] SpringBoot 的配置文件、yaml语法、配置注入、松散绑定
程序员文章站
2022-03-26 11:37:40
配置文件 SpringBoot 有两种配置文件格式,二选一即可,官方推荐 yaml: application.properties key=value的格式 application.yaml key: value的格式 配置文件位置 SpringBoot会从这四个位置全部加载主配置文件;互补配置。优 ......
配置文件
springboot 有两种配置文件格式,二选一即可,官方推荐 yaml:
- application.properties key=value的格式
- application.yaml key: value的格式
配置文件位置
springboot会从这四个位置全部加载主配置文件;互补配置。优先级从高到低。
- --spring.config.location=f:/application.yaml
- /config/application.yaml
- /application.yaml
- /src/main/resources/config/application.yaml
- /src/main/resources/application.yaml
yaml 格式特点
- 冒号后面必须有一个空格,不能省略
- 以缩进来控制层级关系,左边对齐的为同一层级
- 属性和值的大小写敏感
- 双引号中的特殊字符会转义输出,如"hello \n world"会发生换行
- 双引号中的特殊字符会原样输出,如‘hello \n world’所见即所得
配置示例
# src/main/resources/application.properties server.port=8081
# src/main/resources/application.yaml server: port: 8081 # 对象形式 student: name: zhangsan age: 18 # 行内对象形式 student: {name: zhangsan,age: 18} # 数组形式 pets: - cat - dog - pig # 行内数组形式 pets: [cat,dog,pig]
配置 banner
# src/main/resources/banner.txt # https://www.bootschool.net/ascii-art _ _ _(9(9)__ __/^\/^\__ /o o \/_ __\_\_/\_/_/_ \___, \/_ _\.' './_ _/\_ `---`\ \/_ _\/ \/_ _|.'_/ \ \/_\/ / \/_ |/ / \ `-' | ';_:' / /| \ \ .' /_/ |,___.-`', /`'---` /___/` /____/
注入 yaml 配置文件(方式一)
package com.wu.helloworld.pojo; @component public class dog { @value("阿黄") private string name; @value("18") private integer age; }
@springboottest class helloworldapplicationtests { @autowired dog dog; @test public void contextloads() { system.out.println(dog) } }
注入 yaml 配置文件(方式二)
<!-- 导入配置文件处理器依赖,需要重启ide --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-configuration-processor</artifactid> <optional>true</optional> </dependency>
package com.wu.helloworld.pojo; @component public class dog { private string name; private integer age; //构造函数、get、set、tostring 等方法 }
@component @configurationproperties(prefix = "person") public class person { private string name; private integer age; private boolean happy; private date birth; private map<string,object> maps; private list<object> lists; private dog dog; //构造函数、get、set、tostring 等方法 }
person: name: wu_${random.uuid} age: ${random.int} happy: false birth: 2000/01/01 maps: {k1: v1,k2: v2} lists: - code - girl - music dog: name: ${person.dogname:默认名字}_旺财 age: 1
@springboottest class demoapplicationtests { @autowired person person; @test public void contextloads() { system.out.println(person); } }
注入 properties 配置文件
设置 properties 的编码格式为utf-8:
file / settings / file encodings / properties files / utf-8 && √ transparent native-to-ascii conversion
# src/main/resources/person.properties person.name=wu person.age=18 person.sex=男
@propertysource(value = "classpath:person.properties") @component public class person { @value("${person.name}") // 从配置文件中取值 private string name; @value("#{9*2}") // #{spel} spring表达式 private int age; @value("男") // 字面量 private string sex; }
松散绑定
dog: first-name: 旺财 age: 3 @component public class dog { private string firstname; // 可以绑定横杠的配置值 private integer age; }
上一篇: C、C++ 标准输入重定向 & 万能头 - 编程技巧
下一篇: golang高并发模型