接下來我們所有的Spring代碼實例將會基于Spring Boot,因此我們先來了解一下Spring Boot這個大殺器。
Spring早期使用xml配置的方式來配置Spring Beans之間的關(guān)系,比如AOP和依賴注入的配置。隨著功能以及業(yè)務(wù)邏輯的日益復(fù)雜,應(yīng)用便會伴隨大量的XML配置文件以及復(fù)雜的Bean依賴關(guān)系。隨著Spring 3.0的發(fā)布,Spring團隊逐漸開始擺脫XML配置文件,并且在開發(fā)過程中大量使用“約定優(yōu)先配置”(convention over configuration)的思想來擺脫Spring框架中各類紛繁復(fù)雜的配置。Spring就是在這樣一種背景下被抽象出來的一個在Spring之上的開發(fā)框架。
Spring Boot的設(shè)計目的是用來簡化新Spring應(yīng)用的創(chuàng)建以及開發(fā)過程。從它的名字可以看出,其作用在于創(chuàng)建和啟動新的基于 Spring 框架的項目,它能夠幫助開發(fā)人員很容易的創(chuàng)建出基于Spring的獨立運行和產(chǎn)品級別的應(yīng)用。它包含的特性如下:
應(yīng)用獨立運行,對于Web應(yīng)用直接嵌入應(yīng)用服務(wù)器(Tomcat or Jetty)根據(jù)項目的依賴(Maven or Gradle中定義的依賴)自動配置Spring框架的特性提供生產(chǎn)環(huán)境中的監(jiān)控功能——性能、應(yīng)用狀態(tài)信息等不會生成繁瑣的java代碼以及XML配置文件Spring Boot并不是用來替代Spring的解決方案,而是和Spring框架緊密結(jié)合用于提升Spring開發(fā)者體驗的工具。Spring Boot應(yīng)用通常只需要非常少量的配置代碼,而且有內(nèi)嵌的Web服務(wù)器,讓開發(fā)者能夠更加專注于業(yè)務(wù)邏輯。在后面的開發(fā)過程中,我們能夠逐漸感受到Spring Boot這些優(yōu)秀特性給我們帶來的好處。
接下來我們通過創(chuàng)建一個簡單的Spring Boot項目來建立對初步的印象。一開始可能會遇到一些不太理解的地方,沒關(guān)系,我們會在學(xué)習(xí)過程中我們會逐一搞定。
我們通過Maven來創(chuàng)建項目,【File】->【New】->【Others...】;彈出的對話框中包含了一系列的項目類型,我們選擇Maven Project;一個技巧是可以在
選中后出現(xiàn)了新的對話框,勾選Create a simple project (skip archetype selection),點擊type filter text中輸入Maven進行搜索過濾,這樣很快可以找到Maven Project。Next >后,按照下圖輸入內(nèi)容:輸入完成后點擊
Finish,第一個項目就創(chuàng)建成功了。項目創(chuàng)建成功后,在Eclipse IDE左邊的
Project Explorer中會出現(xiàn)我們剛剛創(chuàng)建的項目,其中有一個pom.xml文件,我們先對它進行修改,增加一個依賴,內(nèi)容變?yōu)椋?/p><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.3.RELEASE</version> </parent> <groupId>com.tianmaying</groupId> <artifactId>website</artifactId> <version>0.0.1-SNAPSHOT</version> <name>tmy-website</name> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies></project>編輯完成后保存(可以使用
Ctrl+S快捷鍵)。編寫Web應(yīng)用程序
然后我們在
src/main/java目錄下新建一個Java文件:
在這里我們需要填寫
Package,Name兩個字段就可以了,然后編輯這個java文件:package com.tianmaying.webdev;import org.springframework.boot.Springapplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@SpringBootApplication@Controllerpublic class Application { @RequestMapping("/") @ResponseBody public String index() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); }}運行Web應(yīng)用程序
經(jīng)過以上步驟,一個簡單的Web應(yīng)用就已經(jīng)開發(fā)完成了。接下來我們要將它運行起來:
在Project Explorer中找到Application.java右鍵彈出菜單Run as...,選中Java Application接下來就能看到在IDE下方的
Console視圖中出現(xiàn)運行信息,當(dāng)你看到Started Application in 2.214 seconds (JVM running for 2.466)信息后,說明應(yīng)用服務(wù)器啟動成功。接下來打開瀏覽器,在地址欄中輸入
[http://localhost:8080](http://localhost:8080),如果能夠看到Hello World!出現(xiàn)在瀏覽器中,那說明環(huán)境配置大功告成!Spring Boot初探
Maven的POM文件之間可以有繼承關(guān)系,下面這段代碼就表示我們的POM文件繼承自groupId為
org.springframework.boot,artifactId為spring-boot-starter-parent,version為1.2.3.RELEASE的POM文件。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.3.RELEASE</version> </parent>這個文件是Spring Boot提供給我們的,里面定義了一些屬性,比如Java編譯級別,UTF-8編碼,以及測試框架和一些插件的配置。這里我們只管引入就好。注意這個Parent POM中定義的Java編譯級別為1.6,如果需要改變?yōu)?.8,只需要重新定義
<java.version>屬性即可覆蓋,類似于類的方法重載。<properties> <java.version>1.8</java.version></properties>在Maven依賴中引入了
spring-boot-starter-web,它包含了Spring Boot預(yù)定義的一些Web開發(fā)的常用依賴:spring-web,spring-webmvc: Spring Web Mvc框架tomcat-embed-*: 內(nèi)嵌Tomcat容器jackson:處理json數(shù)據(jù)spring-*:Spring框架spring-boot-autoconfigure: Spring Boot提供的自動配置功能Java代碼中沒有任何配置,和傳統(tǒng)的Spring應(yīng)用相比,多了一個
@SpringBootApplication,這是是Spring Boot提供的注解,這個注解會告訴Spring去掃描類路徑,初始化Spring Context以及啟動內(nèi)嵌Tomcat容器等一系列操作。我們沒有看到一行配置代碼,也沒有web.xml。基于Spring Boot的應(yīng)用在大多數(shù)情況下都不需要我們?nèi)ワ@式地聲明各類配置,而是將最常用的默認(rèn)配置作為約定,在不聲明的情況下也能適應(yīng)大多數(shù)的開發(fā)場景。小節(jié)
即使我們還沒有使用Spring的驚訝,從這個簡單的Spring Boot項目我們也可以發(fā)現(xiàn)開發(fā)上相比傳統(tǒng)的jsp和Servlet開發(fā)已經(jīng)具有了一些特點,比如:
不需要再專門配置Web服務(wù)器,Web服務(wù)器已經(jīng)被內(nèi)嵌在應(yīng)用中了,應(yīng)用開發(fā)環(huán)境的建立更加簡單了,從現(xiàn)在開始讓我們可以和之前安裝和配置過的Tomcat說再見了。
Spring Boot提供的依賴,比如
spring-boot-starter-web,能夠幫助我們引入大部分Web開發(fā)中需要用到的依賴,極大的簡化了我們自己配置依賴的工作。我們已經(jīng)了解了創(chuàng)建Spring Boot應(yīng)用的基本步驟,接下來我們要做的第一步就是講博客應(yīng)用通過Spring Boot來重寫。
參考
Eclipse IDE for JavaEE DevelopersEclipse Java 8 SupportMaven實戰(zhàn)Spring Boot
新聞熱點
疑難解答