目錄
一、SpringBoot簡介
二、創建SpringBoot(通過Idea腳手架搭建項目)
三、properties配置文件
?properties 配置文件說明
①. properties 基本語法
②. 讀取配置?件
③. properties 缺點
2. yml 配置?件說明
①. yml 基本語法
②. yml 使用進階
四、日志框架
在程序中得到日志對象
使用日志對象打印日志
日志級別?
日志持久化
一、SpringBoot簡介
在開始了解Spring Boot之前,需要先了解Spring,因為Spring Boot的誕生是和Spring息息相關的,Spring Boot是Spring發展到一定程度的產物,但是Spring Boot并不是spring的替代品,Spring Boot是為了讓程序員根號的使用Spring而產生的。Spring Boot稱之為搭建程序的腳手架,最主要的作用就是幫助我們快速搭建龐大的spring項目,進而減少一些xml的配置,做到開箱即用的效果。
Spring Boot的優勢
-
快速集成框架,Spring Boot提供了添加啟動依賴功能,用于快速使項目集成各種框架。
-
內置tomcat容器,無需配置web容器,直接運行和部署程序。
-
快速部署項目,無需外部容器,打成jar包,快速啟動運行項目。
-
不需要繁瑣的xml配置,使用注解和配置的方式快速開發。
二、創建SpringBoot(通過Idea腳手架搭建項目)
現在我們來說一下,如何在Idea上直接搭建SpringBoot項目:
1. 在左側列表選擇Spring Initializer,代表這是一個Spring Boot項目
2. 項目來源地址,因為spring是國外的服務器,所以我們通常使用阿里云的網站來搭建會快一點。
3. 點擊設置,更改URL為:https://start.aliyun.com/
然后輸入我們的項目名稱Name,還有一個Java版本,打包類型,然后點擊Next
1. 選擇Spring Boot項目,由于這是國內鏡像,阿里云的版本一般比官網低一點
2. 同樣,我們在搜索框里搜索我們需要添加的依賴,比如說這里添加一個web依賴。然后直接點擊Finish
點擊Finish之后會直接打開我們剛剛創建的項目,可以看到這里還加了一個demo給我們,
OK,我們直接運行,出現下面頁面也是代表我們構建運行項目成功。
熱部署:
根據上面的步驟,我們已經完成了?Spring Boot項目的創建和運行,但是有一個問題就是,每次修改代碼后都需要重新啟動代碼才會生效,可以配置熱部署來解決這個問題。
熱部署的配置如下:
這樣修改對于我們修改web資源,可以立即生效,對于修改java代碼,部分生效?
三、properties配置文件
配置文件作用:
整改項目中所有重要的數據都在配置文件中配置的,比如:
-
數據庫的連接信息(包含用戶名和密碼的設置)
-
項目的啟動端口
-
第三方系統的調用密鑰信息等
-
用發現和定位問題的普通日志和異常日志等
配置文件的格式:
.properties
.yml
理論上來講 .properties 可以和 .yml 共存,但實際的業務當中,我們通常會采取?種統?的配置?件格式,這樣可以更好的維護(降低故障率)。當 properties 和 yml ?起存在?個項?中時, .properties 配置?件的優先級最?,但加載完 .properties ?件之后,也會加載 .yml ?件的配置信息。
?properties 配置文件說明
properties 配置?件是最早期的配置?件格式,也是創建 Spring Boot 項?默認的配置?件。
①. properties 基本語法
properties 是以鍵值的形式配置的,key 和 value 之間是以 “=” 連接的。
# 配置項?端?號
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
②. 讀取配置?件
使? @Value 注解來實現。@Value 注解使? “${}” 的格式讀取。
@Component
public class ReadYml {@Value("${server.port}")private String port;
?@PostConstructpublic void postConstruct() {System.out.println("Read YML,port:" + port);}
}
?
③. properties 缺點
properties 配置是以 key-value 的形式配置的,properties 配置?件中會有很多的冗余的信息。
2. yml 配置?件說明
yml 是 YAML 是縮寫,它的全稱 Yet Another Markup Language 翻譯成中?就是“另?種標記語?”。
yml 優點分析:
-
yml 是?個可讀性?,寫法簡單、易于理解,它的語法和 JSON 語?類似。
-
yml ?持更多的數據類型,它可以簡單表達清單(數組)、散列表,標量等數據形態。它使?空?符號縮進和?量依賴外觀的特?,特別適合?來表達或編輯數據結構、各種配置?件等。
-
yml ?持更多的編程語?,它不?是 Java 中可以使?在 Golang、PHP、Python、Ruby、JavaScript、Perl 中。
①. yml 基本語法
yml 是樹形結構的配置?件,它的基礎語法是“key: value”,注意 key 和 value 之間使?英?冒汗加空格的?式組成的,其中的空格不可省略
spring:datasource:url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8username: rootpassword: root
?
②. yml 使用進階
yml 配置不同數據類型及 null
# 字符串
value1: Hello
# 布爾值,true或false
value2: true
value3: false
# 整數
value4: 10
value: 0b1010_0111_0100_1010_1110 # ?進制
# 浮點數
value5: 3.14159
value6: 314159e-5 # 科學計數法
# Null,~代表null
value7: ~
?
對于基本數據類型直接 key: value 即可。
yml 讀取配置的?式和 properties 相同,使? @Value 注解即可
@Component
public class ReadYml {@Value("${value1}")private String hello;@PostConstructpublic void postConstruct() {System.out.println("Read YML,Hello:" + hello);}
?
}
?
四、日志框架
日志的作用
日志是程序的重要組成部分,程序在生產環境中報錯了,不讓你打開控制臺看日志,那么你應該怎么查看報錯日志呢,因此日志框架對于我們程序員來說至關重要。
日志框架除了發現和定位問題之外,還可以通過日志實現如下功能;
-
記錄用戶的登錄日志,方便分析用戶是正常登錄還是惡意破解的用戶。
-
記錄系統的操作日志,方便數據回復和定位操作人。
-
記錄程序的執行時間,方便優化程序提供數據支持。
日志怎么用??
Spring Boot 項目在啟動的時候默認就有日志輸出,如下圖所示
1.Spring Boot 內置了日志框架(不然也輸出不了日志)。
2.默認情況下,輸出的日志并非是開發者定義和打印的,那開發者怎么在程序中自定義打印日志呢?
3.日志默認是打印在控制臺上的,而控制臺的日志是不能被保存的,那么怎么把日志永久的保存下來呢??
在程序中得到日志對象
在程序中獲取日志對象需要使用日志工廠 LoggerFactory,如下代碼所示:
// 1.得到日志對象
private static Logger logger = LoggerFactory.getLogger(UserController.class);
注意:Logger 對象是屬于 org.slf4j 包下的,不要導入錯包。
因為 Spring Boot 中內置了日志框架 Slf4j,所以咱們可以直接在程序中調用 slf4j 來輸出日志
使用日志對象打印日志
// 2.使用日志打印日志
logger.info("--------------要輸出日志的內容----------------");
日志級別?
日志的級別分為:
-
trace:微量,少許的意思,級別最低;
-
info:普通的打印信息;
-
debug:需要調試時候的關鍵信息打印;
-
warn:警告,不影響使用,但需要注意的問題;
-
error:錯誤信息,級別較高的錯誤日志信息;
-
fatal:致命的,因為代碼異常導致程序退出執行的事件。
日志級別配置只需要在配置文件中設置“logging.level”配置項即可,如下所示:
longging:level:root:?error
配置跟路徑的日志級別。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/user")
public class UserController {
// 1.得到日志對象
private static Logger logger =
LoggerFactory.getLogger(UserController.class);
@Value("${server.port}")
private String port;
@Value("${spring.datasource.url}")
private String url;
@RequestMapping("/sayhi")
public String sayHi() {
// 2.使用日志打印日志
logger.trace("================= trace ===============");
logger.debug("================= debug ===============");
logger.info("================= info ===============");
logger.warn("================= warn ===============");
logger.error("================= error ===============");
return "Hi," + url;
}
}
默認日志輸出級別 清除掉配置文件中的日志設置,觀察控制臺輸入的日志級別。
得到以下結論,日志的輸出級別,默認是 info。
日志持久化
以上的日志都是輸出在控制臺上的,然而在生產環境上咱們需要將日志保存下來,以便出現問題之后追溯問 題,把日志保存下來的過程就叫做持久化。想要將日志進行持久化,只需要在配置文件中指定日志的存儲目錄或者是指定日志保存文件名之后,Spring Boot 就會將控制臺的日志寫到相應的目錄或文件下了。配置日志文件的保存路徑:
logging:?file://設置日志文件的目錄path:?D:\home\logs//設置日志文件的文件名name:?D:\home\logs\spring-1024.log??