從零搭建Spring Boot腳手架(1):開篇以及技術選型

碼農小胖哥發表於2020-08-04

1. 前言

目前Spring Boot已經成為主流的Java Web開發框架,熟練掌握Spring Boot並能夠根據業務來定製Spring Boot成為一個Java開發者的必備技巧,但是總是零零碎碎不夠系統,所以萌生了從零搭建一個後端腳手架的想法。並把這個過程中的細節思路和之前的一些文章結合起來展現給大家,希望能夠實實在在幫助學習Spring Boot的同學,當然能力有限如果有不足之處還請多多指教。

2. 面向的群體

首先,這個定位不是完全沒有接觸過Spring Boot的初學者,因為Spring Boot的簡單入門並不是特別難,找一些其他大佬的入門教程學習一陣就可以很快的入門;而是面向具有Spring Boot的學習經驗和不夠熟練的同學們,同時提供一些可以開箱即用的解決方案到實際開發中。

3. 專案結構介紹

其實我不太喜歡那種相互依賴整了好幾個模組,DAOServiceController各搞一個層,然後層層依賴。對於單體專案來說這種結構把簡單的事情複雜化了,容易導致依賴管理混亂。所以一般的簡單專案我都建議採用下面的結構:

專案總體結構

kono-dependencies是一個依賴版本管理的模組,負責kono-app所有的依賴版本、依賴選型的管理。原則上kono-app所有的依賴都應該來自kono-dependencies而且版本從kono-dependencies繼承,這樣能做到依賴版本的集中控制,使得技術選型和相容性得到保證。

Maven為例,kono-dependencies只會包含一個pom.xml,而且打包方式packaging只能是pom。所有的依賴都被dependencyManagement管理。

<groupId>cn.felord</groupId>
<artifactId>kono-dependencies</artifactId>
<version>1.0.0.RELEASE</version>
<!--打包方式-->
<packaging>pom</packaging>

<dependencyManagement>
   <!--被管理的依賴-->
</dependencyManagement>

這裡有一個小技巧,我們把Spring Boot的父依賴加入管理,就等於把專案的Spring Boot所有的官方starter納入了管理:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>${springboot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
         <!-- 其它依賴 -->
    </dependencies>
</dependencyManagement>
      

當然如果有業務需要可以分更多的模組,但是依賴管理一定要清晰、可控。

4. 版本號

版本號的規則也是很有學問的。這裡我選用了最容易理解的方式,也是Spring Boot採用的版本號命名風格。

Spring Boot版本號風格

  • Major 主版本號,當有非相容性的變更時,遞增主版本號。

  • Minor 次版本號,當以可向後相容的方式增加了功能時,遞增次的版本號。

  • Patch 補丁版本號,當有向後相容的bug修復時,遞增補丁版本號。

  • Label 標記,用來區分開發版、快照版、里程碑版、正式發行版。

5. 技術選型

以下都是Java技術棧特定場景下的常用選擇:

  • springboot 基礎整合框架
  • servlet4 web 標準
  • undertow 或者tomcat web 容器
  • spring cache 快取抽象層
  • spring security 安全框架
  • json web token 安全框架token技術
  • mybatis plus 3 ORM增強
  • spring data jpa (選)
  • redis 快取中介軟體
  • mysql 資料庫
  • mapstruct bean轉換器,編譯期使用
  • lombok bean簡化工具
  • swagger2 文件(開發測試)
  • docker 容器技術

在一開始,這裡面的一些技術並不會整合進去,隨著迭代會在合適的時機加入它們,甚至會加入這裡面沒有的技術棧。

6. 最後

通過從零搭建腳手架的過程您可以循序漸進的學到如何整合一些功能到專案中,同時還能看到一些實際開發中才能遇到的一些問題以及解決這些問題的思路。同時如果在這個過程中您有好的建議和問題也可以和我進行溝通,感謝持續關注,共同提高。

關注公眾號:Felordcn 獲取更多資訊

個人部落格:https://felord.cn

相關文章