前言
手把手教你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極客思維
微信掃一掃,關注公眾號