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来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...
随机推荐
- 对C#中事件的简单理解
对于C#中的事件,我举了个简单的例子来理解事件及其处理. 这个例子中母亲是事件的发布者,事件是吃饭了.儿子和父亲是事件的订阅者,各自的Eat方法是处理事件的方法. 下面是详细的加注的例子: using ...
- nodeJs 初学案例摘要
在学习nodeJs的时候,照着文档做的,但是到最后的上传文件显示图片总是报错, 所用的fs.renameSync出错:Error: EXDEV, cross-device link not permi ...
- 如何利用shell或者awk二维数组实现9x9乘法表?
第一种:利用shell for循环来实现. for i in `seq 1 9`do for j in `seq 1 9` do if [ $i -ge $j ] then echo -en &quo ...
- 怎么新开一个组件并且配置路由?vue-cli
首先要明白: 路由就是url路径,如果一个组件被引入到了另外一个组件,这个页面就包含这个组件了,所以这个被包含的组件不要去路由哪里配置了 第一步: 先写上想要添加的组件 2.组件的内容 3.路由的配置 ...
- 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能
转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...
- Leetcode题 257. Binary Tree Paths
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...
- My algorithmic road
序言 初窥门径 1 第一题 素数的烦恼 离开了家乡,你到达了数字之地,在这里数字2总感觉自己是自然数中最独特的一个,他只有一和它本身两个因数,为此它十分苦恼.为了不再寂寞,他建立了素数王国,他请求许多 ...
- go struct 自定义标签获取
package main import ( "fmt" "reflect" ) type Test struct { Id int `json:"us ...
- Flutter移动电商实战 --(41)详细页_数据接口的调试
建立数据模型层,我们的业务逻辑分开,然后进行后台数据的调试 生成model类 json数据: { "code": "0", "message" ...
- 学习笔记——C++编程cin测试记录
cin读取输入流,遇到空格会暂停,下次继续读入剩下的,+++. #include <iostream> using namespace std; int main() { cout< ...