值得使用的Spring Boot

黃博文發表於2015-03-18

2013年12月12日,Spring釋出了4.0版本。這個本來只是作為Java平臺上的控制反轉容器的庫,經過將近10年的發展已經成為了一個巨無霸產品。不過其依靠良好的分層設計,每個功能模組都能保持較好的獨立性,是Java平臺不可多得的好用的開源應用程式框架。 Spring的4.0版本可以說是一個重大的更新,其全面支援Java8,並且對Groovy語言也有良好的支援。另外引入了非常多的新專案,比如Spring boot,Spring Cloud,Spring WebSocket等。

Spring由於其繁瑣的配置,一度被人成為“配置地獄”,各種XML、Annotation配置,讓人眼花繚亂,而且如果出錯了也很難找出原因。Spring Boot專案就是為了解決配置繁瑣的問題,最大化的實現convention over configuration(約定大於配置)。熟悉Ruby On Rails(ROR框架的程式設計師都知道,藉助於ROR的腳手架工具只需簡單的幾步即可建立起一個Web應用程式。而Spring Boot就相當於Java平臺上的ROR。

Spring Boot的特性有以下幾條:

  • 建立獨立Spring應用程式

  • 嵌入式Tomcat,Jetty容器,無需部署WAR包

  • 簡化Maven及Gradle配置

  • 儘可能的自動化配置Spring

  • 直接植入產品環境下的實用功能,比如度量指標、健康檢查及擴充套件配置等

  • 無需程式碼生成及XML配置

目前Spring Boot的版本為1.2.3,需要Java7及Spring Framework4.1.5以上的支援。如果想在Java6下使用它,需要一些額外的設定。

如果你想建立一個基於Spring的Web應用,只是簡單的在頁面中輸出一個’Hello World’,按照之前的老方式,你需要建立以下檔案:

  • web.xml : 配置使用Spring servlet,以及web其它配置;

  • spring-servlet.xml:配置Spring servlet的配置;

  • HelloController.java: controller。

如果你想執行它的話,需要將生成的WAR包部署到相應的Tomcat或者Jetty容器中才行,這也需要相應的配置。

如果使用Spring Boot的話,我們只需要建立HelloController.java。

HelloController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package hello;

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class HelloController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(HelloController.class, args);
    }
}

然後藉助於Spring Boot為Maven和Gradle提供的外掛來生成Jar包以後直接執行java -jar即可,簡單易用。

上面提過Spring Boot對Maven及Gradle等構建工具支援力度非常大。其內建一個’Starter POM’,對專案構建進行了高度封裝,最大化簡化專案構建的配置。另外對Maven和Gradle都有相應的外掛,打包、執行無需編寫額外的指令碼。

Spring Boot不止對web應用程式做了簡化,還提供一系列的依賴包來把其它一些工作做成開箱即用。下面列出了幾個經典的Spring Boot依賴庫。

  • spring-boot-starter-web:支援全棧web開發,裡面包括了Tomcat和Spring-webmvc。

  • spring-boot-starter-mail:提供對javax.mail的支援.

  • spring-boot-starter-ws: 提供對Spring Web Services的支援

  • spring-boot-starter-test:提供對常用測試框架的支援,包括JUnit,Hamcrest以及Mockito等。

  • spring-boot-starter-actuator:支援產品環境下的一些功能,比如指標度量及監控等。

  • spring-boot-starter-jetty:支援jetty容器。

  • spring-boot-starter-log4j:引入預設的log框架(logback)

Spring Boot提供的starter比這個要多,詳情請參閱文件:Starter POMs章節。

如果你不喜歡Maven或Gradle,Spring提供了CLI(Command Line Interface)來開發執行Spring應用程式。你可以使用它來執行Groovy指令碼,甚至編寫自定義命令。安裝Spring CLI有多種方法,具體請看:安裝Spring Boot Cli章節。

安裝完畢以後可以執行 srping version來檢視當前版本。

你可以使用Groovy編寫一個Controller。

hello.groovy
1
2
3
4
5
6
7
8
9
@RestController
class WebApplication {

    @RequestMapping("/")
    String home() {
        "Hello World!"
    }

}

然後使用spring run hello.groovy來直接執行它。訪問localhost:8080即可看到列印的資訊。

Spring Boot提供的功能還有很多,比如對MVC的支援、外部Properties的注入,日誌框架的支援等。這裡就不詳述了。感興趣的可以檢視其文件來獲取詳細的資訊。

如果你想在你的專案中使用Spring,那麼最好把Spring Boot設為標配,因為它真的很方面開發,不過你也需要仔細閱讀它的文件,避免不知不覺掉入坑中。

相關文章