一.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 ..."); }