1. 程式人生 > >Spring Boot2 系列教程(二)建立 Spring Boot 專案的三種方式

Spring Boot2 系列教程(二)建立 Spring Boot 專案的三種方式

我最早是 2016 年底開始寫 Spring Boot 相關的部落格,當時使用的版本還是 1.4.x ,文章發表在 CSDN 上,閱讀量最大的一篇有 43W+,如下圖:

2017 年由於種種原因,就沒有再繼續更新 Spring Boot 相關的部落格了,2018年又去寫書了,也沒更新,現在 Spring Boot 最新穩定版是 2.1.8 ,鬆哥想針對此寫一個系列教程,專門講 Spring Boot2 中相關的知識點。這個系列,就從本篇開始吧。

Spring Boot 介紹

我們剛開始學習 JavaWeb 的時候,使用 Servlet/JSP 做開發,一個介面搞一個 Servlet ,很頭大,後來我們通過隱藏域或者反射等方式,可以減少 Servlet 的建立,但是依然不方便,再後來,我們引入 Struts2/SpringMVC 這一類的框架,來簡化我們的開發 ,和 Servlet/JSP 相比,引入框架之後,生產力確實提高了不少,但是用久了,又發現了新的問題,即配置繁瑣易出錯,要做一個新專案,先搭建環境,環境搭建來搭建去,就是那幾行配置,不同的專案,可能就是包不同,其他大部分的配置都是一樣的,Java 總是被人詬病配置繁瑣程式碼量巨大,這就是其中一個表現。那麼怎麼辦?Spring Boot 應運而生,Spring Boot 主要提供瞭如下功能:

  1. 為所有基於 Spring 的 Java 開發提供方便快捷的入門體驗。
  2. 開箱即用,有自己自定義的配置就是用自己的,沒有就使用官方提供的預設的。
  3. 提供了一系列通用的非功能性的功能,例如嵌入式伺服器、安全管理、健康檢測等。
  4. 絕對沒有程式碼生成,也不需要XML配置。

Spring Boot 的出現讓 Java 開發又迴歸簡單,因為確確實實解決了開發中的痛點,因此這個技術得到了非常廣泛的使用,鬆哥很多朋友出去面試 Java 工程師,從2017年年初開始,Spring Boot基本就是必問,現在流行的 Spring Cloud 微服務也是基於 Spring Boot,因此,所有的 Java 工程師都有必要掌握好 Spring Boot。

系統要求

截至本文寫作(2019.09),Spring Boot 目前最新版本是 2.1.8,要求至少 JDK8,整合的 Spring 版本是 5.1.9 ,構建工具版本要求如下:

Build Tool Version
Maven 3.3+
Gradle 4.4+

內建的容器版本分別如下:

Name Version
Tomcat 9.0 4.0
Jetty 9.4 3.1
Undertow 2.0 4.0

三種建立方式

初學者看到 Spring Boot 工程建立成功後有那麼多檔案就會有點懵圈,其實 Spring Boot 工程本質上就是一個 Maven 工程,從這個角度出發,鬆哥在這裡向大家介紹三種專案建立方式。

線上建立

這是官方提供的一個建立方式,實際上,如果我們使用開發工具去建立 Spring Boot 專案的話(即第二種方案),也是從這個網站上建立的,只不過這個過程開發工具幫助我們完成了,我們只需要在開發工具中進行簡單的配置即可。

首先開啟 https://start.spring.io 這個網站,如下:

這裡要配置的按順序分別如下:

  • 專案構建工具是 Maven 還是 Gradle ?鬆哥見到有人用 Gradle 做 Java 後端專案,但是整體感覺 Gradle 在 Java 後端中使用的還是比較少,Gradle 在 Android 中使用較多,Java 後端,目前來看還是 Maven 為主,因此這裡選擇第一項。
  • 開發語言,這個當然是選擇 Java 了。
  • Spring Boot 版本,可以看到,目前最新的穩定版是 2.1.8 ,這裡我們就是用最新穩定版。
  • 既然是 Maven 工程,當然要有專案座標,專案描述等資訊了,另外這裡還讓輸入了包名,因為建立成功後會自動建立啟動類。
  • Packing 表示專案要打包成 jar 包還是 war 包,Spring Boot 的一大優勢就是內嵌了 Servlet 容器,打成 jar 包後可以直接執行,所以這裡建議打包成 jar 包,當然,開發者根據實際情況也可以選擇 war 包。
  • 然後選選擇構建的 JDK 版本。
  • 最後是選擇所需要的依賴,輸入關鍵字如 web ,會有相關的提示,這裡我就先加入 web 依賴。

所有的事情全部完成後,點選最下面的 Generate Project 按鈕,或者點選 Alt+Enter 按鍵,此時會自動下載專案,將下載下來的專案解壓,然後用 IntelliJ IDEA 或者 Eclipse 開啟即可進行開發。

使用開發工具建立

有人覺得上面的步驟太過於繁瑣,那麼也可以使用 IDE 來建立,鬆哥這裡以 IntelliJ IDEA 和 STS 為例,需要注意的是,IntelliJ IDEA 只有 ultimate 版才有直接建立 Spring Boot 專案的功能,社群版是沒有此項功能的。

IntelliJ IDEA

首先在建立專案時選擇 Spring Initializr,如下圖:

然後點選 Next ,填入 Maven 專案的基本資訊,如下:

再接下來選擇需要新增的依賴,如下圖:

勾選完成後,點選 Next 完成專案的建立。

STS

這裡我再介紹下 Eclipse 派系的 STS 給大家參考, STS 建立 Spring Boot 專案,實際上也是從上一小節的那個網站上來的,步驟如下:

首先右鍵單擊,選擇 New -> Spring Starter Project ,如下圖:

然後在開啟的頁面中填入專案的相關資訊,如下圖:

這裡的資訊和前面提到的都一樣,不再贅述。最後一路點選 Next ,完成專案的建立。

Maven 建立

上面提到的幾種方式,實際上都藉助了 https://start.spring.io/ 這個網站,鬆哥記得在 2017 年的時候,這個網站還不是很穩定,經常發生專案建立失敗的情況,從2018年開始,專案建立失敗就很少遇到了,不過有一些讀者偶爾還是會遇到這個問題,他們會在微信上問鬆哥這個問題腰怎麼處理?我一般給的建議就是直接使用 Maven 來建立專案。步驟如下:

首先建立一個普通的 Maven 專案,以 IntelliJ IDEA 為例,建立步驟如下:

注意這裡不用選擇專案骨架(如果大夥是做練習的話,也可以去嘗試選擇一下,這裡大概有十來個 Spring Boot 相關的專案骨架),直接點選 Next ,下一步中填入一個 Maven 專案的基本資訊,如下圖:

然後點選 Next 完成專案的建立。

建立完成後,在 pom.xml 檔案中,新增如下依賴:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

新增成功後,再在 java 目錄下建立包,包中建立一個名為 App 的啟動類,如下:

@EnableAutoConfiguration
@RestController
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

@EnableAutoConfiguration 註解表示開啟自動化配置。

然後執行這裡的 main 方法就可以啟動一個 Spring Boot 工程了。

專案結構

使用工具創建出來的專案結構大致如下圖:

對於我們來說,src 是最熟悉的, Java 程式碼和配置檔案寫在這裡,test 目錄用來做測試,pom.xml 是 Maven 的座標檔案,就這幾個。

總結

本文主要向大家介紹了三種建立 Spring Boot 工程的方式,大家有更6的方法歡迎來討論。

相關推薦

Spring Boot2 系列教程()建立 Spring Boot 專案方式

我最早是 2016 年底開始寫 Spring Boot 相關的部落格,當時使用的版本還是 1.4.x ,文章發表在 CSDN 上,閱讀量最大的一篇有 43W+,如下圖: 2017 年由於種種原因,就沒有再繼續更新 Spring Boot 相關的部落格了,2018年又去寫書了,也沒更新,現在 Spring

Spring Boot2 系列教程(十四)Spring Boot 整合 Jpa

Spring Boot 中的資料持久化方案前面給大夥介紹了兩種了,一個是 JdbcTemplate,還有一個 MyBatis,JdbcTemplate 配置簡單,使用也簡單,但是功能也非常有限,MyBatis 則比較靈活,功能也很強大,據我所知,公司採用 MyBatis 做資料持久化的相當多,但是 MyBat

Spring Boot2 系列教程(十五)Spring Boot 整合 Jpa 多資料來源

本文是 Spring Boot 整合資料持久化方案的最後一篇,主要和大夥來聊聊 Spring Boot 整合 Jpa 多資料來源問題。在 Spring Boot 整合JbdcTemplate 多資料來源、Spring Boot 整合 MyBatis 多資料來源以及 Spring Boot 整合 Jpa 多資料

Spring Boot2 系列教程(十六)Spring Boot 整合 Redis

在 Redis 出現之前,我們的快取框架各種各樣,有了 Redis ,快取方案基本上都統一了,關於 Redis,鬆哥之前有一個系列教程,尚不瞭解 Redis 的小夥伴可以參考這個教程: Redis 教程合集 使用 Java 操作 Redis 的方案很多,Jedis 是目前較為流行的一種方案,除了 Jedi

Spring Boot2 系列教程(十八)Spring Boot 整合 Session 共享

這篇文章是鬆哥的原創,但是在第一次釋出的時候,忘了標記原創,結果被好多號轉發,導致我後來整理的時候自己沒法標記原創了。寫了幾百篇原創技術乾貨了,有一兩篇忘記標記原創進而造成的一點點小小損失也能接受,不過還是要和小夥伴們說明一下。 在傳統的單服務架構中,一般來說,只有一個伺服器,那麼不存在 Session

Spring Boot2 系列教程(十九)Spring Boot 整合 Redis

經過 Spring Boot 的整合封裝與自動化配置,在 Spring Boot 中整合Redis 已經變得非常容易了,開發者只需要引入 Spring Data Redis 依賴,然後簡單配下 redis 的基本資訊,系統就會提供一個 RedisTemplate 供開發者使用,但是今天鬆哥想和大夥聊的不是這種

Spring Boot2 系列教程(四)理解Spring Boot 配置檔案 application.properties

在 Spring Boot 中,配置檔案有兩種不同的格式,一個是 properties ,另一個是 yaml 。 雖然 properties 檔案比較常見,但是相對於 properties 而言,yaml 更加簡潔明瞭,而且使用的場景也更多,很多開源專案都是使用 yaml 進行配置(例如 Hexo)。除了簡潔

Spring Boot2 系列教程(十一)Spring Boot 中的靜態資源配置

當我們使用 SpringMVC 框架時,靜態資源會被攔截,需要新增額外配置,之前老有小夥伴在微信上問鬆哥 Spring Boot 中的靜態資源載入問題:“鬆哥,我的 HTML 頁面好像沒有樣式?”,今天我就通過一篇文章,來和大夥仔細聊一聊這個問題。 1. SSM 中的配置 要講 Spring Boot 中的問

Spring Boot2 系列教程(十八)Spring Boot 中自定義 SpringMVC 配置

用過 Spring Boot 的小夥伴都知道,我們只需要在專案中引入 spring-boot-starter-web 依賴,SpringMVC 的一整套東西就會自動給我們配置好,但是,真實的專案環境比較複雜,系統自帶的配置不一定滿足我們的需求,往往我們還需要結合實際情況自定義配置。 自定義配置就有講究了,由於

Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate

在 Java 領域,資料持久化有幾個常見的方案,有 Spring 自帶的 JdbcTemplate 、有 MyBatis,還有 JPA,在這些方案中,最簡單的就是 Spring 自帶的 JdbcTemplate 了,這個東西雖然沒有 MyBatis 那麼方便,但是比起最開始的 Jdbc 已經強了很多了,它沒有

Spring Boot2 系列教程(十一)整合 MyBatis

前面兩篇文章和讀者聊了 Spring Boot 中最簡單的資料持久化方案 JdbcTemplate,JdbcTemplate 雖然簡單,但是用的並不多,因為它沒有 MyBatis 方便,在 Spring+SpringMVC 中整合 MyBatis 步驟還是有點複雜的,要配置多個 Bean,Spring Boo

Spring Boot2 系列教程(十三)理解 Spring Data Jpa

有很多讀者留言希望鬆哥能好好聊聊 Spring Data Jpa! 其實這個話題鬆哥以前零零散散的介紹過,在我的書裡也有介紹過,但是在公眾號中還沒和大夥聊過,因此本文就和大家來仔細聊聊 Spring Data 和 Jpa! 本文大綱: 1. 故事的主角 1.1 Jpa 1.1.1 JPA 是什麼 Jav

Spring Boot2 系列教程(十六)定時任務的兩實現方式

在 Spring + SpringMVC 環境中,一般來說,要實現定時任務,我們有兩中方案,一種是使用 Spring 自帶的定時任務處理器 @Scheduled 註解,另一種就是使用第三方框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具備這兩個 Spring

Spring Boot2 系列教程()理解 Spring Boot 專案中的 parent

前面和大夥聊了 Spring Boot 專案的三種建立方式,這三種建立方式,無論是哪一種,建立成功後,pom.xml 座標檔案中都有如下一段引用: <parent> <groupId>org.springframework.boot</groupId> &l

Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置

搞 Spring Boot 的小夥伴都知道,Spring Boot 中的配置檔案有兩種格式,properties 或者 yaml,一般情況下,兩者可以隨意使用,選擇自己順手的就行了,那麼這兩者完全一樣嗎?肯定不是啦!本文就來和大夥重點介紹下 yaml 配置,最後再來看看 yaml 和 properties 配

Spring Boot2 系列教程(六)自定義 Spring Boot 中的 starter

我們使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 為我們帶來了眾多的自動化配置,有了這些自動化配置,我們可以不費吹灰之力就能搭建一個生產級開發環境,有的小夥伴會覺得這個 Starter 好神奇呀!其實 Starter 也都是 Spring + SpringMVC

Spring Boot2 系列教程(八)Spring Boot 中配置 Https

https 現在已經越來越普及了,特別是做一些小程式或者公眾號開發的時候,https 基本上都是剛需了。 不過一個 https 證書還是挺費錢的,個人開發者可以在各個雲服務提供商那裡申請一個免費的證書。我印象中有效期一年,可以申請 20 個。 今天要和大家聊的是在 Spring Boot 專案中,如何開啟 h

Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf

雖然現在慢慢在流行前後端分離開發,但是據鬆哥所瞭解到的,還是有一些公司在做前後端不分的開發,而在前後端不分的開發中,我們就會需要後端頁面模板(實際上,即使前後端分離,也會在一些場景下需要使用頁面模板,例如郵件傳送模板)。 早期的 Spring Boot 中還支援使用 Velocity 作為頁面模板,現在的

Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

今天來聊聊 Spring Boot 整合 Freemarker。 Freemarker 簡介 這是一個相當老牌的開源的免費的模版引擎。通過 Freemarker 模版,我們可以將資料渲染成 HTML 網頁、電子郵件、配置檔案以及原始碼等。Freemarker 不是面向終端使用者的,而是一個 Java 類庫,我

Spring Boot2 系列教程(十)@ControllerAdvice 的使用場景

嚴格來說,本文並不算是 Spring Boot 中的知識點,但是很多學過 SpringMVC 的小夥伴,對於 @ControllerAdvice 卻並不熟悉,Spring Boot 和 SpringMVC 一脈相承,@ControllerAdvice 在 Spring Boot 中也有廣泛的使用場景,因此本文