目錄
1.Spring Boot配置文件
1.1 Spring Boot 的配置文件類型及命名
1.2 properties和yml的優先級
2. properties配置文件
1.1 properties語法格式
1.2 自定義配置及配置文件的讀取
1.3 properties的缺點
3. yml配置文件
3.1 yml語法格式
3.2 自定義配置及配置文件的讀取
3.4 yml配置文件
4. 更多配置示例:banner
配置文件最重要的目的是解決硬編碼問題;
1.Spring Boot配置文件
1.1 Spring Boot 的配置文件類型及命名
1、Spring Boot配置文件有以下三種:
(1)application.properties;
(2)application.yaml;
(3)application.yml;(yml是yaml的縮寫)
2、配置文件的命名必須如上所示,不能隨便更改application,否則會無法識別:
(1)正確命名:
(2)錯誤命名:以properties文件為例,將application修改為applications:
1.2 properties和yml的優先級
現在application.properties中設置項目端口為9090:
在application.yml中設置端口為9091:
啟動程序,查看啟動日志:
現注釋掉properties文件的端口設置語句,重新啟動項目,啟動日志如下:
關于配置文件的優先級總結如下:
1、當.properties和.yml共存在一個項目中時,二者都會被加載。但當二者配置有沖突時,.properties的優先級更高;
2、通常在一個項目中僅保留兩個配置文件之一即可;
2. properties配置文件
properties文件是Spring Boot項目創建的默認配置文件。
1.1 properties語法格式
properties配置文件以key-value形式組織,key與value用=連接;
建議key使用小寫,單詞與單詞之間使用.進行分割;
以配置項目端口號和配置數據庫連接為例:
# 配置項目端口號
server.port=9090
# 配置數據庫連接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
注意使用的是spring的@value,不是lombok的@value:
1.2 自定義配置及配置文件的讀取
若需在項目中主動讀取配置文件,可以使用@Value注解實現,使以"${ }"格式讀取,示例如下:
現在application.properties中新增配置項,令其key為demo.key:
# ?o???¨?????? WEB è??é????ˉ??£
server.port=8080# 自定義配置
demo.key=hello,properties
在Controller包下創建一個propertiesController類:
package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PropertiesController {@Value("${demo.key}")private String key1;@RequestMapping("/readKey")public String readKey(){return "Configuration item has read: key1 = "+key1;}
}
啟動程序,通過Chrome進行訪問:
可見配置文件成功讀取;
1.3 properties的缺點
以連接數據庫為例:
# 配置數據庫連接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root
可見properties中存在一定冗余,如spring.datasource重復寫;?
3. yml配置文件
3.1 yml語法格式
yml是樹形配置文件,其基礎語法格式為“key: value”,冒號后有一個空格不可省略,以配置項目端口號和配置數據庫連接為例:
# 配置項目端口號
server:port: 9091
# 配置數據庫連接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root
注:1、逐層換行表示一種層次,idea會幫助換行,對于server、spring等必須頂格,否則會報錯;
2、key與value之間的冒號后必須有一個空格,否則會報錯;
yml文件中的顏色變化也可幫助檢查:
3.2 自定義配置及配置文件的讀取
若需在項目中主動讀取配置文件,可以使用@Value注解實現,使以"${ }"格式讀取,示例如下:
現在application.yml中新增配置項,令其key為demo.key1:
demo:key1: hello,yml
?在Controller包下創建一個ymlController類:
package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ymlController {@Value("${demo.key1}")private String key1;@RequestMapping("/readYml")public String redKey1(){return "Configuration item has read: key1 = "+key1;}
}
啟動程序,使用Chrome進行訪問:?
可見配置文件成功讀取;
注:在yml配置的文件使用${ }進行讀取時,需將配置文件中的冒號與空格更換為. ;
3.4 yml配置文件
優點:
1、可讀性高,寫法簡單,易于理解;
2、支持更多數據類型,可簡單表達對象,數組,List,Map等數據形態;
(本部分將在下一篇文章進行介紹)
3、支持更多編程語言,不僅在java中,在golang、python等中都可以使用;
缺點:
1、不適合寫復雜的配置文件,當配置文件非常復雜時會造成可讀性較差;
2、對格式有較強要求,尤其是空格很容易造成難以查找和糾正的錯誤;
4. 更多配置示例:banner
Spring官網提供的更多配置見鏈接:Common Application Properties :: Spring Boot
Spring默認啟動日志設計的banner圖形為spring:
現使用yml配置文件,以修改spring默認啟動輸出的banner圖形為例,將其修改為Hello World。
第一步:查找官網banner的配置:
第二步:創建banner.txt文件:
可使用一些在線小工具生成Hello World圖案,復制到banner.txt中:
第三步:在yml中新增banner.txt配置如下:
# 配置項目端口號
server:port: 9091
# 配置數據庫連接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: rootbanner:location: banner.txt
第四步:重啟程序,查看日志: