一.Properties與Yaml
SpringBoot支援properties與yaml兩種配置檔案application.properties/application.yml
yaml簡單使用
1.yaml簡介
yaml是以資料為中心的,比json,xml更適合做配置檔案
2.yaml基本語法
k: v:形式的鍵值對,:後面必須有空格
以空格縮排來控制層級關係
大小寫敏感
例子:
server: port: 8081 # 設定預設埠號 servlet: path: /init
值的寫法
k: v 直接書寫
【字串預設不用加上單引號或者雙引號】
“”:雙引號;不會轉義字串裡面的特殊字元;
“:單引號;會轉義特殊字元,特殊字元最終只是一個普通的字串資料
物件
k: v:在下一行來寫物件的屬性和值的關係
例如:
persion: name: zhangsan age: 10
行內寫法:
persion: {name: zhangsan,age: 10}
陣列(List,Set,Map)
普通陣列,List,Set 使用 -值 來表示陣列中的一個元素
arrays: - arrays1 - arrays2 - arrays3
Map使用k: v的形式來表示
map:
k1: v1
k2: v2
k3: v3
使用配置檔案注入
在pom.xml引入依賴,用於註釋處理器生成自己的後設資料
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
實體類:
/** * persion類 */ @Component @ConfigurationProperties(prefix = "persion") public class Persion { private String name; private int age; private boolean isMan; private Date birth; private String[] hobbys; private Map<String,String> skills; private List<String> enjoys; // 省略getter setter toString }
yaml配置:
persion: name: zhangsan age: 20 isMan: true birth: 1997/11/12 hobbys: - 籃球 - 足球 - 乒乓球 skills: java: javase python: ai enjoys: - eating - running - playgames
測試類
@Autowired Persion persion; @Test public void contextLoads() { System.out.println(persion); }
yaml語法教程
http://www.ruanyifeng.com/blog/2016/07/yaml.html
二.伺服器配置
更改埠:
server.port=8081
更改上下文訪問路徑,SpringBoot預設範文路徑為“/”:
server.servlet.context-path=/base
常見的伺服器配置
server.port:SpringBoot監聽埠
server.error.path:錯誤處理路徑
server.servlet.context-path:配置SpringBoot預設上下文路徑
三 日誌配置
定義日誌級別
日誌級別 ERROR WARN DEBUF INFO TRACE 級別從高到低
# 輸出日誌級別 ERROR WARN DEBUF INFO TRACE,日誌只會列印當前級別,以及高於當前級別的日誌
logging.level.root=info
輸出日誌到檔案
# 輸出日誌到檔案
logging.file=/my.log
定義日誌輸出格式
輸出到控制檯日誌格式:
logging.pattern.console=【%level %date %logger %thread %M %L %m】 %n
輸出到日誌檔案的日誌格式:
# 定義輸出到檔案的日誌格式
logging.pattern.file=【%level %date %logger %thread %M %L %m】 %n
日誌格式基本引數
屬性 內容 %level 表示輸出日誌級別 %date 表示日期發生時的時間 %logger 用於輸出Logger名字,包名+類名,{n}限定輸出長度 %thread 當前執行緒名 %M 日誌發生時方法的名字 %L 日誌呼叫所在程式碼行 %m 日誌訊息 %n 日誌換行
日誌使用例子:
public class Hello { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(Hello.class); logger.debug("Hello World"); } }
日誌的輸出格式:
%d:表示日期時間 %thread:表示執行緒名 %‐5level:級別從左顯示5個字元寬度 %logger{50}:表示logger名字最長50個字元,否則按照句點分割。 %msg:日誌訊息 %n:是換行符 %d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n
例子:
設定application.properties的日誌配置
# 設定日誌等級 logging.level.com.fjut.*=trace # 設定在控制檯輸出的日誌的格式 logging.pattern.console=[%d{yyyy‐MM‐dd}]-[%level]-[%msg]-%logger{50}%n # 指定檔案中日誌輸出的格式 logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %level === %logger{50} ==== %msg%n
# 設定輸出日誌檔案
logging.file=/my.log
測試:
//列印五個等級的日誌 @Test public void contextLoads() { Logger logger = LoggerFactory.getLogger(getClass()); logger.error("error ..."); logger.warn("warn ..."); logger.debug("debug ..."); logger.info("info ..."); logger.trace("trace ..."); }