spring-boot是什么?
spring-boot是spring的一個(gè)子項(xiàng)目,spring-boot旨在能夠快速構(gòu)建基于spring的獨(dú)立的,產(chǎn)品級(jí)別的應(yīng)用,擁有“一鍵啟動(dòng)”,“配置簡約”,“內(nèi)置服務(wù)器”,“應(yīng)用健康檢查”等一系列高逼格的功能。
spring-boot hello world
注:這里的hello world并沒有一板一眼的將官網(wǎng)的案例照搬,而是希望以一種最快速的方式構(gòu)建一個(gè)由spring boot構(gòu)建的應(yīng)用,讓包括我在內(nèi)的對(duì)spring boot陌生的同學(xué)對(duì)它有一個(gè)最直觀的感受。
java

IDE

Maven(Eclipse內(nèi)置)

你也可以自行配置一個(gè)外部Maven,隨意
接下來我們新建一個(gè)Maven項(xiàng)目,我們選取webapp模板


搭建完畢之后,我們需要修改pom.xml文件,將spring boot相關(guān)的依賴添加進(jìn)去
首先,添加parent節(jié)點(diǎn)到pom.xml
1 <parent>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-parent</artifactId>
4 <version>1.3.5.RELEASE</version>
5 </parent>
spring boot提供了一系列的“
starter POMs”,可以輕松的添加相關(guān)的jar到項(xiàng)目的類路徑下,而
spring-boot-starter-parent節(jié)點(diǎn)則是一個(gè)特殊的“starter”,它提供了很多maven默認(rèn)的依賴,并且提供了依賴管理,使得我們可以忽略依賴的版本號(hào),也就是說我們無需再聲明
version標(biāo)識(shí)。
*starter POMs:可以理解一系列的依賴,每一個(gè)依賴都提供了該功能所需的jar包我們添加
spring-boot-starter-web到pom.xml
1 <parent>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-parent</artifactId>
4 <version>1.3.5.RELEASE</version>
5 </parent>
6
7 <dependencies>
8 <dependency>
9 <groupId>org.springframework.boot</groupId>
10 <artifactId>spring-boot-starter-web</artifactId>
11 </dependency>
12 </dependencies>
之后我們看到構(gòu)建web應(yīng)用所需的jar包已經(jīng)添加到Maven依賴中了

更多關(guān)于“starter”的信息可以查看
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter接下來可以寫代碼了,添加一個(gè)“控制器”到src/main/java/demo下
1 package demo;
2
3 import org.springframework.boot.*;
4 import org.springframework.boot.autoconfigure.*;
5 import org.springframework.web.bind.annotation.*;
6
7 @RestController
8 @EnableAutoConfiguration
9 public class Example {
10
11 @RequestMapping("/")
12 String home() {
13 return "Hello World!";
14 }
15
16 public static void main(String[] args) throws Exception {
17 SpringApplication.run(Example.class, args);
18 }
19
20 }
之后我們“run as Java application”或者通過Maven goals“spring-boot:run”,就可以發(fā)現(xiàn),我們的服務(wù)已經(jīng)在本地的8080端口啟動(dòng)了。

是不是太快了...我也這么覺得,真的是“傻瓜式”的部署
@RestController這個(gè)注解是“stereotype annotation”(不知道怎么翻譯合適,或許可以理解為“套版注解”),在閱讀代碼的時(shí)候給讀者提供必要的提示,對(duì)于spring來說,他扮演了一個(gè)特別的角色,在案例中他是一個(gè)web的控制器,所以spring會(huì)用他來處理對(duì)應(yīng)的請求。
@RequestMapping
用過spring-MVC的同學(xué)都知道,這個(gè)注解用來對(duì)應(yīng)路由
@EnableAutoConfiguration
這個(gè)注解就比較牛皮了,也是目前為止個(gè)人感覺spring boot強(qiáng)大的地方之一。這個(gè)注解告知spring,去通過你添加的依賴,“猜測”你想要怎么去配置spring,比如我們添加了start POM
spring-boot-starter-web,那么spring會(huì)認(rèn)為我們需要部署一個(gè)web應(yīng)用,所以spring boot幫助我們啟動(dòng)tomcat服務(wù),配置springMVC等操作。官方文檔同時(shí)提到,@EnableAutoConfiguration注解在設(shè)計(jì)時(shí)就與start POMs協(xié)作良好,但是二者并不絕對(duì)相關(guān),就算沒有start POM,spring boot依然會(huì)盡最大努力去自動(dòng)配置(笑)
截止目前,排除細(xì)節(jié)的情況下,已經(jīng)通過最簡單粗暴的方式構(gòu)造了一個(gè)spring boot的應(yīng)用,希望在認(rèn)知上能給大家一點(diǎn)幫助,但是還遠(yuǎn)遠(yuǎn)不夠,后續(xù)還要添加更多與web應(yīng)用相關(guān)的內(nèi)容。