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

1. 前言

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

2. 面向的羣體

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

3. 項目結構介紹

其實我不太喜歡那種相互依賴整了好幾個模塊,DAOServiceController各搞一個層,而後層層依賴。對於單體項目來講這種結構把簡單的事情複雜化了,容易致使依賴管理混亂。因此通常的簡單項目我都建議採用下面的結構:redis

項目整體結構

kono-dependencies是一個依賴版本管理的模塊,負責kono-app全部的依賴版本、依賴選型的管理。原則上kono-app全部的依賴都應該來自kono-dependencies並且版本從kono-dependencies繼承,這樣能作到依賴版本的集中控制,使得技術選型和兼容性獲得保證。spring

Maven爲例,kono-dependencies只會包含一個pom.xml,並且打包方式packaging只能是pom。全部的依賴都被dependencyManagement管理。sql

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

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

這裏有一個小技巧,咱們把Spring Boot的父依賴加入管理,就等於把項目的Spring Boot全部的官方starter歸入了管理:docker

<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技術棧特定場景下的經常使用選擇:json

  • 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

相關文章
相關標籤/搜索