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極客思維
微信掃一掃,關注公眾號