天天看點

SpringBoot入門(一)——開箱即用

Spring Boot是什麼

從根本上來講Spring Boot就是一些庫的集合,是一個基于“約定優于配置”的原則,快速搭建應用的架構。本質上依然Spring,在這之上幫我們省去了很多樣闆化的配置,使得我們能夠更專注于應用程式功能的開發。

Spring Boot精要

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

  • 自動配置:針對常見的應用功能,SpringBoot自動提供相關的配置,減少用于樣闆化配置的時間
  • 起步依賴:指定基于功能的依賴,用更大粒度的依賴來降低依賴的複雜度
  • 指令行界面:這是SpringBoot的可選特性,借此你隻需要寫代碼就能完成完整的應用程式,無需傳統項目建構
  • Actuator:讓你能夠深入運作中的SpringBoot應用程式一探究竟

從Spring開始

為了展現SpringBoot的優勢,我們先來看看如果使用Spring開發一個簡單的Hello World Web應用程式,我們需要做的事情:

  • 一個項目結構,其中有一個包含必要依賴的Maven或者Gradle構件檔案,最起碼要有Spring MVC和Servlet API這些依賴
  • 一個web.xml檔案(或者一個WebApplicationInitializer實作),其中聲明了Spring的DispatcherServlet
  • 一個啟用Spring MVC的Spring配置
  • 一個控制器類,以"Hello World"響應HTTP請求
  • 一個用于部署應用程式的Web應用伺服器,比如Tomcat

可以看到上面一系列的事中隻有編寫控制器是和HelloWorld功能相關的,雖然現代的IDE也能幫我們簡化掉一些步驟,但是Spring相關的配置就算從别的工程拷貝也還是逃不了這一步。

接下來讓我們來看下用Spring Boot是什麼樣的情況。

Spring Boot開箱即用

你上次在超市或大型零售商店自己推開門是什麼時候?大多數大型商店都安裝了帶感應功能的自動門,雖然所有門都能讓你進入建築物内,但自動門不用你動手推拉。 與之類似,很多公共場所的衛生間裡都裝有自動感應水龍頭和自動感應紙巾機。雖然沒有超市自動門這麼普及,但這些設施同樣對你沒有太多要求,可以很友善地出水和紙巾。 我敢打賭你也能想出無數例子,證明裝置讓現代生活更加自動化,而不是增加障礙。

下面通過一個例子來展示Spring Boot是如何開箱即用的。 依然是Hello World Web項目,我們來看下如何用InteliJ IDEA來建立。 點選IDEA的File-New-Project...,選擇左邊頁籤中的Spring Initializr,可以看到如下界面。

SpringBoot入門(一)——開箱即用

使用預設的https://start.spring.io,這将會連接配接網絡,查詢Spring Boot目前可用版本群組件清單。(目前時間用的是Spring Boot的2.0.0.RELEASE)

Next-輸入項目資訊-Next,來到選擇起步依賴界面,如下:

SpringBoot入門(一)——開箱即用

對于一個簡單的Hello World Web項目來說,這裡隻用勾選Web即可(我在這裡另外勾選了Thymeleaf,在視窗的最右邊可以看到)。 在這個界面可以看到Spring Boot為我們提供的大量的起步依賴。我們所勾選的web會為我們注入Web相關的所有依賴,省去我們自己配置依賴的時間。

再點選一次Next工程就建立完成了,等待下載下傳相關的Maven依賴(第一次所花費的時間可能比較久)和IDEA建立索引。

建立完成後,項目結構如下圖所示:

SpringBoot入門(一)——開箱即用

是一個常見的Maven項目結構,比較特别的是Spring Boot為我們自動生成了2個檔案,application.properties和BlogDemoApplication.java。

application.properties是Spirng Boot預設的配置檔案,當期是個空檔案,現在不用理會後面會細講。

BlogDemoApplication.java是Spring Boot自動生成的啟動類。有了這個類,現在這個項目已經是一個可以啟動的Web項目了,雖然還沒有任何控制器,我們依然可以試着通路預設端口8080。 如果IDEA沒有自動建立啟動配置,可以自行到Run/Debug Configurations裡添加。添加時選擇Spring Boot,在右邊選框的"Main class"中選擇自動生成的啟動類,如下:

SpringBoot入門(一)——開箱即用

點選運作後,通路8080端口将得到Spring Boot預設的錯誤頁:

SpringBoot入門(一)——開箱即用

接着就可以開發我們的功能了——Hello World。

@Controller@RequestMapping("/demo")public class HelloWorldController {    @RequestMapping("/hello")    @ResponseBody
    public String hello(){        return "hello";
    }
}      

很簡單一個Controller,最後再次啟動項目,已經能愉快的hello了!

小結

回顧一下,去掉啰嗦的介紹,實際上的操作隻有點點點、輸入項目名、再編寫一下Controller就完成了一個Hello World。仿佛回到了初學Java的年代,那時候還是Eclipse,也是點點點、輸入項目名、然後編寫一個main方法控制台輸出一個hello。步驟相似,然而這次得到的已然是一個擁有衆多Spring特性的一個Web工程。