SpringBoot 之 配置文件、yaml语法、配置注入、松散绑定
配置文件
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
private 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 注解加载制定的配置文件
@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
@ConfigurationProperties(prefix = "dog")
public class Dog {
private String firstName; // 可以绑定横杠的配置值
private Integer age;
}
SpringBoot 之 配置文件、yaml语法、配置注入、松散绑定的更多相关文章
- SpringBoot:配置文件及自动配置原理
西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...
- springboot(3)——配置文件和自动配置原理详细讲解
原文地址 目录 概述 1. 配置文件作用 2.配置文件位置 3.配置文件的定义 3.1如果是定义普通变量(数字 字符串 布尔) 3.2如果是定义对象.Map 3.3如果是定义数组 4.配置文件的使用 ...
- JAVAEE——SpringBoot配置篇:配置文件、YAML语法、文件值注入、加载位置与顺序、自动配置原理
转载 https://www.cnblogs.com/xieyupeng/p/9664104.html @Value获取值和@ConfigurationProperties获取值比较 @Confi ...
- SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入
全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...
- SpringBoot 属性配置文件数据注入配置和yml与properties区别
前言 我们知道SpringBoot 通过配置类来解放一堆的xml文件配置,通属性配置文件,来进行,系统全局属性配置,这样极大的简化了我们开发过程,java web 也可以甜甜的从此 快速配置 Spri ...
- springboot----四、yaml配置注入
四.yaml配置注入 4.1.配置文件 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 :key=value applic ...
- SpringBoot系列之YAML配置用法
1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...
- SpringBoot读取yml中的配置,并分离配置文件
前言 在项目中经常遇到需要读取配置文件中的配置信息,这些配置信息之所以不写在代码中是因为实际项目发布或者部署之后会进行更改,而如果写在代码中编译之后没有办法进行修改. 之前使用的是properties ...
- SpringBoot之yaml语法及静态资源访问
配置文件-yaml 在spring Boot开发中推荐使用yaml来作为配置文件. 基本语法: key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 ...
随机推荐
- RunLoop基础知识以及GCD
- 1.1 字面意思 a 运行循环 b 跑圈 - 1.2 基本作用(作用重大) a 保持程序的持续运行(ios程序因而能一直活着不会死) b 处理app中的各种事件(比如触摸事件 ...
- css实现项目中的加载动画
// =========================================第一个动画 <template> <!-- 这个组件用于 页面下滑到底部时 展示加载动画 -- ...
- 【C/C++】习题3-1 得分/算法竞赛入门经典
[题目]一个由O和X组成的串,O的得分为目前连续出现的O的个数,X的得分为0.要求统计得分. 我一开始以为要输出表达式,结果好像不需要? [代码] #include <stdio.h> # ...
- 用graphviz可视化决策树
1.安装graphviz. graphviz本身是一个绘图工具软件,下载地址在:http://www.graphviz.org/.如果你是linux,可以用apt-get或者yum的方法安装.如果是w ...
- ANTLR 简介
<ANTLR 4权威指南>由机械工业出版社出版,有兴趣的读者推荐购买阅读. 本专题大多内容来源于我读<ANTLR 4权威指南>的随手笔记以及个人实践,仅供参考学习,请勿用于任何 ...
- Windows FILETIME 与UNIX时间的转换
windows FILETIME时间从1601/01/01 零时零分零秒开始计时,windows每个时钟滴答将计数加一,每个时钟滴答的间隔是100 nanoseconds(纳秒,1秒=10的九次方纳秒 ...
- 《转》谈谈基于Kerberos的Windows Network Authentication
http://www.cnblogs.com/artech/archive/2007/07/05/807492.html 基本原理引入Key Distribution: KServer-Client从 ...
- [BUUCTF]REVERSE——新年快乐
新年快乐 附件 例行查壳儿,32位程序,upx加壳儿 利用网上找到的脱壳儿工具,拿到了去壳儿后的程序 32位ida打开,shift+f12查看程序里的字符串,得到了关于flag的提示 双击,ctrl+ ...
- windows10 安装 Mysql8.0
目录 1.Mysql8.0下载 2.配置环境变量 3.在安装目录下创建my.ini文件 4 初始化Mysql 5 安装至系统服务 6 更改密码 1.Mysql8.0下载 2.配置环境变量 将下载后文件 ...
- 什么是甘特图(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 名词解释:"甘特图(Gantt Chart)是一种图形化的项目活动及其他相关系统进度情况的水平方向的条状图.&q ...