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用於顯示相關介面

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

如何使用呢?

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

 

 

十四、日誌集成

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

 

百度百科解釋

//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極客思維

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