Spring Boot干貨系列:(一)優雅的入門篇


Spring Boot干貨系列:(一)優雅的入門篇

2017-02-26 嘟嘟MD 嘟爺java超神學堂

 

前言

Spring一直是很火的一個開源框架,在過去的一段時間里,Spring Boot在社區中熱度一直很高,所以決定花時間來了解和學習,為自己做技術儲備。

 

正文

首先聲明,Spring Boot不是一門新技術,所以不用緊張。從本質上來說,Spring Boot就是Spring,它做了那些沒有它你也會去做的Spring Bean配置。它使用“習慣優於配置”(項目中存在大量的配置,此外還內置了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的項目快速運行起來。使用Spring Boot很容易創建一個獨立運行(運行jar,內嵌Servlet容器)、准生產級別的基於Spring框架的項目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

 

Spring Boot精要

Spring將很多魔法帶入了Spring應用程序的開發之中,其中最重要的是以下四個核心。

  • 自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置

  • 起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。

  • 命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。

  • Actuator:讓你能夠深入運行中的Spring Boot應用程序,一套究竟。

詳細的我們就不展開,等你愛上后自然會去深入的了解,后續章節我們會一一展開介紹。接下來讓我們開搞吧。我已經迫不及待的要嘗嘗Spring Boot的味道了。

 

系統要求

目前Spring Boot正式版為1.5.1.RELEASE默認情況下,Spring Boot 1.5.1.RELEASE需要Java 7和Spring Framework 4.3.6.RELEASE或更高版本,你也可以使用Spring Boot with Java 6和一些額外的配置(不建議),使用Maven(3.2+)或Gradle 2(2.9或更高版本)和3來構建。

雖然你可以使用Java 6或7的Spring Boot,但我們通常推薦Java 8。

所以本博客系列統一使用Java 1.8,Spring Boot 1.5.1.RELEASE以及Maven3.3.9版本。開發工具使用IDEA(強烈推薦,可以看我另外一篇介紹IDEA入門文章,內有官方中文教程:Java人員正確使用 IntelliJ IDEA的方式,點我頭像里面有文章)

 

光速入門-開發一個Web服務

沒有比較就沒有傷害,讓我們先看看傳統Spring MVC開發一個簡單的Hello World Web應用程序,你應該做什么,我能想到一些基本的需求。

  • 一個項目結構,其中有一個包含必要依賴的Maven或者Gradle構建文件,最起碼要有Spring MVC和Servlet API這些依賴。

  • 一個web.xml文件(或者一個WebApplicationInitializer實現),其中聲明了Spring的DispatcherServlet。

  • 一個啟動了Spring MVC的Spring配置

  • 一控制器類,以“hello World”相應HTTP請求。

  • 一個用於部署應用程序的Web應用服務器,比如Tomcat。

     

最讓人難以接受的是,這份清單里面只有一個東西是和Hello World功能相關的,即控制器,剩下的都是Spring開發的Web應用程序必需的通用模板。

接下來看看Spring Boot如何搞定?

很簡單,我僅僅只需要非常少的幾個配置就可以迅速方便的搭建起來一套web項目

 

初始化Spring Boot項目

構建一個Sping Boot的Maven項目,強烈推薦Spring Initializr,它從本質上來說就是一個Web應用程序,它能為你生成Spring Boot項目結構。
Spring Initializr有幾種用法:

  • 通過Web界面使用

  1. 訪問:http://start.spring.io/

  2. 選擇構建工具Maven Project、Spring Boot版本1.5.1以及一些工程基本信息,可參考下圖所示

  3. 點擊Generate Project下載項目壓縮包

  4. 導入到你的工程,如果是IDEA,則需要:
    a.菜單中選擇File–>New–>Project from Existing Sources...
    b.選擇解壓后的項目文件夾,點擊OK
    c.點擊Import project from external model並選擇Maven,點擊Next到底為止。
    d.若你的環境有多個版本的JDK,注意到選擇Java SDK的時候請選擇Java 7以上的版本

  • 通過IntelliJ IDEA使用(個人推薦)
    IntelliJ IDEA是非常流行的IDE,IntelliJ IDEA 14.1已經支持Spring Boot了。
    創建Spring Boot操作步驟如下:
    在File菜單里面選擇 New > Project,然后選擇Spring Initializr,接着如下圖一步步操作即可。

 

項目結構

根據上面的操作已經初始化了一個Spring Boot的框架了,項目結構如下:

如你所見,項目里面基本沒有代碼,除了幾個空目錄外,還包含如下幾樣東西。

  • pom.xml:Maven構建說明文件。

  • Chapter1Application.java:一個帶有main()方法的類,用於啟動應用程序(關鍵)。

  • Chapter1ApplicationTests.java:一個空的Junit測試類,它加載了一個使用Spring Boot字典配置功能的Spring應用程序上下文。

  • application.properties:一個空的properties文件,你可以根據需要添加配置屬性。

     

     

解析pom.xml

大家跟我一起移步pom.xml,看看Spring Boot的跟普通Spring MVC工程的Maven配置有啥不一樣。

可以看出,有幾個配置是不大一樣的,我們挑幾個重要的說說,要是客觀不想過早的了解這些,自行跳過這一知識點即可。

 

解析Spring Boot父級依賴

這塊配置就是Spring Boot父級依賴,有了這個,當前的項目就是Spring Boot項目了,spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven默認依賴,使用它之后,常用的包依賴可以省去version標簽。關於Spring Boot提供了哪些jar包的依賴,可查看C:\Users\用戶.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom

這里我就貼一點點意思意思,如下:

如果你不想使用某個依賴默認的版本,您還可以通過覆蓋自己的項目中的屬性來覆蓋各個依賴項,例如,要升級到另一個Spring Data版本系列,您可以將以下內容添加到pom.xml中。

原本默認版本是Ingalls-RELEASE的(看上面最后一行有說明Ingalls-RELEASE),現在就使用Fowler-SR2版本了,簡單吧。

並不是每個人都喜歡繼承自spring-boot-starter-parent POM。您可能有您需要使用的自己的公司標准parent,或者您可能更喜歡顯式聲明所有的Maven配置。

如果你不想使用spring-boot-starter-parent,您仍然可以通過使用scope = import依賴關系來保持依賴關系管理:

該設置不允許您使用如上所述的屬性(properties)覆蓋各個依賴項,要實現相同的結果,您需要在spring-boot-dependencies項之前的項目的dependencyManagement中添加一個配置,例如,要升級到另一個Spring Data版本系列,您可以將以下內容添加到pom.xml中。


起步依賴 spring-boot-starter-xx

Spring Boot提供了很多”開箱即用“的依賴模塊,都是以spring-boot-starter-xx作為命名的。舉個例子來說明一下這個起步依賴的好處,比如組裝台式機和品牌機,自己組裝的話需要自己去選擇不同的零件,最后還要組裝起來,期間有可能會遇到零件不匹配的問題。耗時又消力,而品牌機就好一點,買來就能直接用的,后續想換零件也是可以的。相比較之下,后者帶來的效果更好點(這里就不討論價格問題哈),起步依賴就像這里的品牌機,自動給你封裝好了你想要實現的功能的依賴。就比如我們之前要實現web功能,引入了spring-boot-starter-web這個起步依賴。我們來看看spring-boot-starter-web到底依賴了哪些,如下圖:

嘿嘿嘿,看來依賴了好多呢,如果讓我自己弄估計要調半天,所以Spring Boot通過提供眾多起步依賴降低項目依賴的復雜度。起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。很多起步依賴的命名都暗示了它們提供的某種或者某類功能。

 

Spring Boot Maven插件

上面的配置就是Spring Boot Maven插件,Spring Boot Maven插件提供了許多方便的功能:

  • 把項目打包成一個可執行的超級JAR(uber-JAR),包括把應用程序的所有依賴打入JAR文件內,並為JAR添加一個描述文件,其中的內容能讓你用java -jar來運行應用程序。

  • 搜索public static void main()方法來標記為可運行類。

 

應用入口類

Chapter1Application是一個很關鍵的啟動類,程序的入口就是這里,為了演示簡單,我們不再新

建控制類,而是直接在這個入口類中編寫,添加@RestController以及index方法,如下:

  1. @SpringBootApplication是Sprnig Boot項目的核心注解,主要目的是開啟自動配置。后續講解原理的時候再深入介紹。

  2. main方法這是一個標准的Java應用的main的方法,主要作用是作為項目啟動的入口。

  3. @RestController注解等價於@Controller+@ResponseBody的結合,使用這個注解的類里面的方法都以json格式輸出。

最后,啟動項目有三種方式:

  • Chapter1Application的main方法

  • 使用命令 mvn spring-boot:run”在命令行啟動該應用,IDEA中該命令在如下位置:

  • 運行“mvn package”進行打包時,會打包成一個可以直接運行的 JAR 文件,使用“java -jar”命令就可以直接運行。

打開瀏覽器訪問http://localhost:8080, 你就能看到頁面顯示Hello Spring Boot效果了,一個簡單的Web的項目就是如此簡單。

 

結束

雖然我上面講解了那么多,但是實際開發步驟就是那么簡單暴力,初始化一個Spring Boot,添加一個控制類,啟動就能看到效果了。

本章作為入門Spring Boot的入門介紹,相關的需要理解的概念就只有這幾點:

  • Spring Boot父級依賴的概念

  • 起步依賴 spring-boot-starter-xx的概念

  • 應用入口類的作用

最后希望你玩的開心~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM