SpringBoot2 配置

hongxinerke發表於2019-02-18

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

 

相關文章