SrpingBoot入门到入坟04-配置文件
SpringBoot使用一个全局的配置文件,名称是固定,作用就是修改SpringBoot自动配置的默认值。
*application.properties
*application.yml
先看看两者的写法,以修改默认端口为例:
application.properties:

application.yml:

当然如果同时修改那么生效的是properties:

但是接下来讲的是yml语法:
YAML Ain't Markup Language;另一种标记语言,语法比较简单,一些规范如下:K:(空格) V;表示一对键值对,空格必须存在。
---使用缩进表示层级关系
---缩进时不允许使用Tab键,只允许使用空格
---大小写敏感
---缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
YAML支持三种数据结构:
---对象:键值对的集合
---数组:一组按次序排列的值
---字面量:单个的,不可再分的值
案列:
定义一个Dog类
package com.lql.quick.vo; /**
* @author: lql
* @date: 2019.11.16
* Description:
*/
public class Dog { private String name;
private int age; @Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} 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;
}
}
再来定义一个Person类,定义一些需要的变量;
package com.lql.quick.vo; import java.util.Date;
import java.util.List;
import java.util.Map; /**
* @author: lql
* @date: 2019.11.16
* Description:
* Created with IntelliJ IDEA
*/
public class Person { private String lastName;
private Integer age;
private Boolean boss;
private Date birth; private Dog dog;
private Map<String,Object> maps;
private List<Object> lists; @Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", dog=" + dog +
", maps=" + maps +
", lists=" + lists +
'}';
} public String getLastName() {
return lastName;
} public void setLastName(String lastName) {
this.lastName = lastName;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Boolean getBoss() {
return boss;
} public void setBoss(Boolean boss) {
this.boss = boss;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} public Dog getDog() {
return dog;
} public void setDog(Dog dog) {
this.dog = dog;
} public Map<String, Object> getMaps() {
return maps;
} public void setMaps(Map<String, Object> maps) {
this.maps = maps;
} public List<Object> getLists() {
return lists;
} public void setLists(List<Object> lists) {
this.lists = lists;
}
}
在此之前在pom.xml文件中新增一个依赖:导入配置文件处理器,配置文件进行绑定就会有提示
<dependency>
<groupId> org.springframework.boot </ groupId>
<artifactId> spring-boot-configuration-processor </ artifactId>
<optional> true </ optional>
</ dependency>
接下来在yml文件中要表示出来:如下:
server:
port: 8083 person:
lastName: lql
age: 17
boss: false
birth: 2002/1/1
dog:
name: tom
age: 2
maps:
java: 1
php: 2
c: 3
lists:
- A
- B
- C
然后需要将配置文件的数据关联到Bean上,所以在Person上加上@ConfigurationProperties和@Component注解:

然后启动启动类,在自带的Spring测试类中测试,

在后控制台能顺利打印:

在.properties中的配置如下:(先注释掉yml)
person.age=18
person.birth=2011/1/12
person.boss=true
person.last-name=lql
person.dog.name=bob
person.dog.age=2
person.lists[0]=11
person.lists[1]=12
person.lists[2]=13
person.maps.java=1
person.maps.c=2
person.maps.php=3
测试结果也是可行的:

但是如果有中文则会出现乱码:

解决办法也很简单,只需要设置一下就行,具体看图

再次运行则没有问题了:

当然写完yml之后可以直接利用第三方转换成properties:反之也一样,都是可行的;

SrpingBoot入门到入坟04-配置文件的更多相关文章
- SrpingBoot入门到入坟03-基于idea快速创建SpringBoot应用
先前先创建Maven项目然后依照官方文档再然后编写主程序写业务逻辑代码才建立好SpringBoot项目,这样太过麻烦,IDE都支持快速创建,下面基于idea: 使用Spring Initializer ...
- SrpingBoot入门到入坟02-HelloWorld的细节和初始自动配置
关于SpringBoot的第一个HelloWorld的一些细节: 1.父项目 首先查看项目中的pom.xml文件 文件中有个父项目,点进去则: 它里面也有一个父项目,再点进去: 可以发现有很多的依赖版 ...
- SrpingBoot入门到入坟01-HelloWorld和SpringBoot打Jar包
第一个SpringBoot: 建立一个maven项目: 再pom.xml里面增加依赖: <?xml version="1.0" encoding="UTF-8&qu ...
- 深度分析ReentrantLock源码及AQS源码,从入门到入坟,建议先收藏!
一.ReentrantLock与AQS简介 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:Reentra ...
- nginx从入门到入坟
目录 1.nginx下载安装 2.启动命令 3.服务脚本 4.nginx目录说明 5.nginx配置文件 6.虚拟主机与域名配置和站点配置 6.1server_name配置规则 7.反向代理负载均衡配 ...
- testlib.h从入门到入坟
学了这么久OI连个spj都不会写真是惭愧啊... 趁着没退役赶紧学一波吧 配置 github下载地址 我是直接暴力复制粘贴的.. 然后扔到MingW的目录里 直接引用就好啦 基本语法 引用testli ...
- SpringBoot整合SpringData JPA入门到入坟
首先创建一个SpringBoot项目,目录结构如下: 在pom.xml中添加jpa依赖,其它所需依赖自行添加 <dependency> <groupId>org.springf ...
- 【Lucene3.6.2入门系列】第04节_中文分词器
package com.jadyer.lucene; import java.io.IOException; import java.io.StringReader; import org.apach ...
- WCF入门教程(五)配置文件
WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
随机推荐
- zabbix(12)使用Grafana
一.Grafana介绍 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知.它主要有以下六大特点: 1.展示方式:快速灵活的客户端图表,面板插 ...
- java1.8 lambda进行并行运算
parallelStream()支持并行运算: package com.roocon.thread.t2; import java.util.Arrays; import java.util.List ...
- 使用python3安装frida-tools出错
执行安装命令 pip3.6 install frida-tools 得到错误信息 error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] c ...
- 教你阅读 Cpython 的源码(一)
目录 第一部分-介绍 Cpython 源代码中有什么? 如何编译 Cpython 代码 编译器能做什么? 为什么 Cpython 是用 C 语言而是 Python 编写的? Python 语言的规范 ...
- spring boot + vue 前后分离实现登录功能(一)
使用webpack 打包初始化项目 vue init webpack book-vue 进入工程目录 cd hello-vue 安装 vue-router npm install vue-router ...
- git补充(关于pull request)转自知乎
当你想更正别人仓库里的错误时,要走一个流程: 1先 fork 别人的仓库,相当于拷贝一份,不会有人直接让你修改原仓库的 2.clone 到本地分支,做一些 bug fix 3.发起 pull requ ...
- T-MAX—项目系统设计与数据库设计
团队作业第四次-项目系统设计与数据库设计 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第四次-项目系统设计与数据库设计 团队名称 T-MAX 这个作业的目标 在开 ...
- perl 语法速查 | 模块安装
perl -MCPAN -e shell install Bio::SeqIO 或者直接perl -MCPAN -e 'install Excel::Writer::XLSX' 用cpan装不上,编译 ...
- Shell中的$0、$1、$2的含义
在 shell 中我们会见到 $0.$1.$2这样的符号,这是什么意思呢? 简单来说 $0 就是你写的shell脚本本身的名字,$1 是你给你写的shell脚本传的第一个参数,$2 是你给你写的she ...
- OpenJudge计算概论-异常细胞检测
/*======================================================================== 异常细胞检测 总时间限制: 1000ms 内存限制 ...