1. 程式人生 > >Springboot 完整搭建快速入門,必看!

Springboot 完整搭建快速入門,必看!

 

前言

手把手教你Springboot微服務專案搭建快速入門,通過本文學習Springboot的搭建快速入門,掌握微服務大致的配置服務,後續將會繼續將核心元件引入到專案中,歡迎關注,點贊,轉發。

 

 

Springboot專案搭建將會從以下幾個方面進行專案搭建快速入門

 

一、專案建立

新建Maven專案

根據上面操作即可完成專案搭建

 

 

二、pom.xml依賴新增

接下來在pom.xml引入springboot相關依賴

引入Springboot相關依賴,完成對專案的依賴配置。

 

 

三、新建資料庫表

首先建一張User資料庫表

1. 這裡用navicat資料庫連結工具

2. 新建一個springboot資料庫(可自行定義)

3. 建立建表語句:

 

 

四、新建App.java專案啟動類

 

 

五、新建Controller

行App,在瀏覽器輸入:localhost:8080/hello,發現“hello spring-boot”說明第一步部署成功。

 

 

六、整合MyBatis

1. 在pom.xml檔案中引入mybatis 和 資料庫(這裡用mysql)的依賴

生成mapper

1. 在resources目錄下,新建一個application.properties(這裡用properties,有興趣小夥伴可以使用yml檔案,這裡名字只用application.properties,不要用其他,否則識別不出),增加如下內容:

2. 建立好對應的model、dao、mapping資料夾,準備MyBatis的生成檔案generatorConfig.xml

3. 在pom.xml檔案裡面引入generator的plugins

4. 執行generatorConfig.xml檔案,生成對應的model、dao、mapping檔案,執行方式如下:

(用這種方式是避免開發人員找不到執行的方式)

5. 執行後,可以得到下圖結果

 

 

七、UserMapper.java檔案中新增登陸方法:

1. 新增登陸方法

2. 對應UserMapping.xml檔案

 

 

八、 新建service實現方法

1. IUserService.java 介面

2. UserServiceImpl.java實現類

3. UserController.java類中增加login和register方法

啟動App.java,並執行:

在瀏覽器上輸入:localhost:8080/register?username=deer&password=123,顯示“註冊成功”

在瀏覽器上輸入:localhost:8080/login?username=deer&password=123,    顯示“登陸成功”

以上就完成了後臺的Controller、Service、Dao之間的互動

 

 

 

九、實現事務支援

修改IUserService介面,增加一個新增batchAdd方法,在UserServiceImpl增加相應實現類,在實現類中故意產生一個被0整除得異常

1. IUserService.java介面中增加batchAdd抽象方法

2. UserService.java類中實現batchAdd()方法

3. 重新執行App.java,在瀏覽器輸入:

localhost:8080/batchAdd?username=enjoy&password=123

可以發現在瀏覽器上出現

然後檢查資料庫,發現表裡面已經產生了一個錯誤的資料,產生了事務不一致問題。

 

4. 新增事務支援:

在batchAdd方法上增加@Transactional註解

重啟服務後,在瀏覽器上輸入:localhost:8080/batchAdd?username=enjoy&password=123

瀏覽器還會繼續報錯,但檢查資料庫,並沒有新增資料,由此可知事務問題已經得到了解決

 

 

 

十、全域性異常

通過上面步驟,雖然已經解決了事務問題,但介面上出現這500錯誤,這對使用者來說還是不友好。

一般在企業裡面對這些異常一般都會統一捕獲,由一個專門的異常處理類來統一處理。

1. 異常捕獲

新建全域性異常處理類GlobalExceptionHandler.java類

重啟服務後,在瀏覽器上輸入會出現異常的服務

localhost:8080/batchAdd?username=enjoy&passwd=123

 

介面返回:

 

2. 404頁面處理

在瀏覽器上故意輸錯地址

localhost:8080/batchAddx?username=enjoy&passwd=123,後端並沒有這服務,雖然已經做了相關的異常捕獲,但瀏覽器還是顯示了:

這個時候返回頁面非常的不友好,要做404異常處理(其他異常程式碼一樣)。

在配置這樣錯誤頁面的時候,以前是在WEB.XML中進行配置,而在這裡,需要有個WebServerFactoryCustomizer的例項進行配置

 

3. 在前面建立的GlobalExceptionHandler,新建一個方法

4. 新建BaseController.java類

重啟服務,在瀏覽器上輸入

localhost:8080/batchAddx?username=enjoy&passwd=123

此時,頁面返回“404,沒有找到頁面!”

 

 

十一、靜態資源訪問

靜態資源:js, css, html, 圖片,音視訊等

靜態資源路徑:是指系統可以直接訪問的路徑,且路徑下的所有檔案均可被使用者直接讀取。

Spring Boot預設提供靜態資源目錄位置需置於classpath下,目錄名需符合如下規則:

/static

/public

/resources

/META-INF/resources

1. 在resources目錄下面建立static資料夾,在資料夾裡面任意放張圖片。

在位址列上輸入localhost:8080/enjoy.jpg,可以看到圖片

 

 

 

十二、前端頁面

1. 引擎模板

SpringBoot 推薦使用模板引擎來渲染html,如果你不是歷史遺留專案,一定不要使用JSP,常用的模板引擎很多,有freemark,thymeleaf等,其實都大同小異

其中springboot 強烈推薦的是用thymeleaf

pom檔案種新增thymeleaf的支援:

2. 新建Controller

Springboot預設的模板配置路徑為:src/main/resources/templates

在resources目錄裡面新建一個templates目錄,在目錄裡面新建testThymeleaf.html檔案

在瀏覽器上輸入:localhost:8080/tpl/themeleaf,可以看到頁面。

 

 

 


 

十三、整合Swagger2 構建API文件

1. Swagger2 的作用

①. 隨專案自動生成強大RESTful API文件,減少工作量

②. API文件與程式碼整合在一起,便於同步更新API說明

③. 頁面測試功能來除錯每個RESTful API

 

修改pom檔案,新增swagger2的相關依賴

 

2. 新建一個swagger的配置類SwaggerConfig.java

 

3. 新建Controller用於顯示相關介面

訪問:http://localhost:8080/swagger-ui.html

如何使用呢?

以上就是swagger2的配置和使用。

 

 

十四、日誌整合

在springboot中預設使用的日誌工具是logback,不過在提及具體的日誌工具之前要提一個名詞,這個名詞就是slf4j(Simple Logging Facade For Java)

 

百度百科解釋

https://baike.baidu.com/item/slf4j/6408868

 

slf4j不是具體的日誌解決方案,它有點類似於jdbc,使用了門面模式,是一個針對各類日誌的抽象實現,既然是抽象的日誌實現,在springboot中肯定不需要額外匯入。

 

注意:spring-boot-starter中就提供了對spring-boot-starter-logging的依賴

在spring-boot-starter-logging中可以看到以及集成了slf4j與具體實現logback的預設支援

 

1. 修改UserController

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

private final Logger logger = LoggerFactory.getLogger(UserController.class);

在瀏覽器上輸入:localhost:8080/hello,可以看控制檯日誌的輸出

 

2. 日誌級別

修改controller 把日誌的輸出改成

logger.debug("這個一個hello日誌");

 

這個時候重啟,再呼叫,發現後臺並不會有任何輸出,這原因是日誌級別在作祟

 

預設情況下,Spring Boot 配置的是INFO 日誌級別,也就是會輸出INFO級別以上的日誌(ERROR, WARN, INFO)。

如果需要 Debug 級別的日誌。在 src/main/resources/application.properties 中配置。

debug=true

此外,配置 logging.level.* 來具體輸出哪些包的日誌級別。

例如

logging.level.root=INFO

logging.level.org.springframework.web=DEBUG

logging.level.cn.cansluck.controller=DEBUG

這個時候,包括springframework.web以及cn.cansluck.controller的debug日誌都可以輸出來了

3. 日誌檔案

一般情況下,springboot日誌只會輸出到控制檯,並不會寫入到日誌檔案,但是,在一些正式環境的應用中,我們需要通過在 application.properites 檔案中配置 logging.file 檔名稱和 logging.path 檔案路徑,將日誌輸出到日誌檔案中。

logging.path = /var/tmp

logging.file = xxx.log

logging.level.root = info

 

注意:

如果只配置 logging.path,在 /var/tmp資料夾生成一個日誌檔案為 spring.log。如果只配置 logging.file,會在專案的當前路徑下生成一個 xxx.log 日誌檔案。

這裡有一個坑,logging.path 和logging.file都配置了,只會有logging.file生效,所以,如果要指定日誌生成的具體位置使用logging.file 配置就好

 

在application.properties中配置

logging.file =D:\\log\\enjoy.log

這樣在F盤的相應位置出現日誌檔案

 

3. log4j2

在spring-boot-dependencies POMs中搜索spring-boot-starter-log4j2

發現Spring boot父Pom中自己提供了這個依賴,於是我們加入如下jar依賴:

 

修改pom.xml檔案

注意: 由於預設使用logback在擴充套件log4j2之前先要把logback移除

日誌使用跟上面logback一樣。

 

 


十五、使用AOP統一日誌處理

為了防止在工作中經常在程式碼中加入大量的日誌處理程式碼,在實際專案開發中,一般使用AOP統一完成日誌處理工作

 

1. 修改pom檔案,引入springboot對aop的支援

2. 新增AOP日誌處理類

通過訪問Controller可以從日誌看到,AOP切面方法已經生效

 

 

 

總結
    本文通過圖文形式,學習Springboot快速入門,包括專案建立、Springmvc整合、MyBatis整合配置、事務整合配置、全域性異常配置、Swagger2整合配置、AOP統一日誌處理,將整個流程大概介紹了一遍,讓想了解和學習Springboot的小夥伴能夠對整體流程有個大概瞭解,也希望能夠利用自己空閒時間按照上面流程完整操作一遍,可以加深自己的理解和印象。如有疑問歡迎評論留言,小編會及時回覆哦~喜歡的小夥伴動動手指點個贊、收藏吧!

 

更多精彩敬請關注公眾號

 

Java極客思維

微信掃一掃,關注公眾號​