SpringBoot配置文件
1. 配置文件的作用
整個項目中所有重要的數(shù)據(jù)都是在配置?件中配置的,比如:
- 數(shù)據(jù)庫的連接信息(包含?戶名和密碼的設(shè)置);
- 項?的啟動端?;
- 第三?系統(tǒng)的調(diào)?秘鑰等信息;
- ?于發(fā)現(xiàn)和定位問題的普通?志和異常?志等。
假如如果沒有配置信息,那么 Spring Boot 項目就不能連接和操作數(shù)據(jù)庫,甚至是不能保存可以用
于排查問題的關(guān)鍵日志,所以配置文件的作用是非常重要的.
2. 配置文件的格式
Spring Boot 配置?件主要分為以下兩種格式:
.properties
.yml
如圖所示:
說明:
- 理論上講
properties
可以和yml
?起存在于?個項?當中,當 properties 和 yml ?起存在?個項?中時,如果配置?件中出現(xiàn)了同樣的配置,比如 properties 和 yml 中都配置了“server.port”,那么這個時候會以 properties 中的配置為主,也就是 .properties 配置文件的優(yōu)先級最高,但加載完 .properties 文件之后,也會加載 .yml 文件的配置信息。 - 雖然理論上來講 .properties 可以和 .yml 共存,但實際的業(yè)務(wù)當中,我們通常會采取?種統(tǒng)?的配置文件格式,這樣可以更好的維護(降低故障率)。
關(guān)閉文件后重寫打開IDEA.
我們可以看到,注釋亂碼了.這是為什么呢?
- 沒有配置編碼.
yml文件中可以設(shè)置UTF-8字符集.
3. properties 配置文件說明
properties 配置?件是最早期的配置文件格式,也是創(chuàng)建 Spring Boot 項目默認的配置文件。
3.1 properties 基本語法
properties 是以鍵值的形式配置的,key 和 value 之間是以=
連接的,如:
# 設(shè)置項目的端口
server.port=8888
spring.datasource.username=root;
spring.datasource.password=root;
PS:配置文件中使用#
來添加注釋信息.
修改端口號為8888,則在網(wǎng)頁中使用8888才能夠訪問,原來的8080不能訪問.
3.2 讀取配置文件
如果在項目中,想要主動的讀取配置?件中的內(nèi)容,可以使用 @Value
注解來實現(xiàn)。
@Value 注解使?${}
的格式讀取,如下代碼所示:
package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ReadYml {
@Value("${server.port}")
private String port;
@PostConstruct
public void postConstruct() {
System.out.println("Read YML,port:" + port);
}
}
3.3 properties 優(yōu)缺點分析
優(yōu)點:
1. 系統(tǒng)默認的配置文件;
2. properties
配置項的優(yōu)先級比 yml
高;
3. 格式簡單、不容易出錯。
缺點:寫法比較冗余。
4. yml配置文件說明
yml 是 YAML 是縮寫,它的全稱 Yet Another Markup Language
翻譯成中文就是“另?種標記
?”。
yml 優(yōu)點分析:
- yml 是?個可讀性?,寫法簡單、易于理解,它的語法和 JSON 語?類似。
- yml ?持更多的數(shù)據(jù)類型,它可以簡單表達清單(數(shù)組)、散列表,標量等數(shù)據(jù)形態(tài)。它使?空白符號縮進和大量依賴外觀的特色,特別適合用來表達或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置?件等。
- yml ?持更多的編程語?,它不?是 Java 中可以使?在 Golang、PHP、Python、Ruby、
JavaScript、Perl 中
4.1 yml 基本語法
yml 是樹形結(jié)構(gòu)的配置?件,它的基礎(chǔ)語法是key: value
,注意 key 和 value 之間使?英?冒號加空格的方式組成的,其中的空格不可省略。
spring: java
student:
name: huang
age: 18
舉個例子:
使用yml連接數(shù)據(jù)庫:
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
username: root
password: root
yml 配置不同數(shù)據(jù)類型及 null
# 字符串
string.value: Hello
# 布爾值,true或false
boolean.value: true
boolean.value1: false
# 整數(shù)
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ?進制
# 浮點數(shù)
float.value: 3.14159
float.value1: 314159e-5 # 科學(xué)計數(shù)法
# Null,~代表null
null.value: ~
4.2 yml 配置讀取
yml 讀取配置的?式和 properties 相同,使用@Value
注解即可,實現(xiàn)代碼如下: @Value("${student.name}")
如果讀取值為空:
但程序正常運行.
若讀取值不存在:
則運行程序出現(xiàn)異常:
注意事項:value 值加單雙引號
yml中內(nèi)容:
string:
str1: 你\n好
str2: '你\n好'
str3: "你\n好"
程序及運行結(jié)果:
我們可以看到:
- 字符串默認不?加上單引號或者雙引號。
- 單引號會轉(zhuǎn)義特殊字符,特殊字符最終只是?個普通的字符串數(shù)據(jù)。
- 雙引號不會轉(zhuǎn)義字符串??的特殊字符;特殊字符會作為本身想表示的意思。
在yml
中除了上述寫法,還有一種寫法,即使用行內(nèi)寫法:
student: {id: 1,name: Java,age: 18}
但是此時需要使用@ConfigurationProperties
來讀取.
舉例:yml
中內(nèi)容:
student: {name: huang,age: 18,id: 24}
Student
類:
package com.example.demo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Getter
@Setter
@Component
@ToString
public class Student {
private String name;
private int age;
private int id;
}
ReadYml2
調(diào)用類:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ReadYml2 {
@Autowired
private Student student;
@PostConstruct
public void postConstruct() {
System.out.println(student);
}
}
運行結(jié)果:
5. properties和yml的對比
-
語法格式:Properties 使用基于鍵值對的簡單文本格式,每個屬性由鍵值對表示,使用等號(=)或冒號(:)進行分隔。而 YAML 使用縮進和冒號表示層級關(guān)系,使用符號(-)表示列表。
-
可讀性:相比 Properties 格式,YAML 格式更具可讀性。YAML 使用縮進和層級結(jié)構(gòu),使得配置文件更加清晰易懂,可以以更直觀的方式表達配置信息。
-
數(shù)據(jù)類型支持:YAML 支持更多的數(shù)據(jù)類型,如字符串、整數(shù)、浮點數(shù)、布爾值、日期等,而 Properties 只支持字符串類型。
-
注釋和空格:在 Properties 文件中,可以使用 # 符號添加注釋。而在 YAML 文件中,可以使用 # 添加注釋,并且可以在文本中靈活地使用空格和換行符。文章來源:http://www.zghlxwxcb.cn/news/detail-646515.html
-
Spring Boot 支持:在 Spring Boot 中,可以使用兩種文件格式進行配置,即 .properties 和 .yml。Spring Boot 對兩種格式都提供了良好的支持,可以根據(jù)自己的喜好和需求選擇使用哪種格式。文章來源地址http://www.zghlxwxcb.cn/news/detail-646515.html
到了這里,關(guān)于【JavaEE進階】SpringBoot 配置文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!