11.1 創(chuàng)建POM
我們需要通過創(chuàng)建一個Maven的pom.xml文件開始袁翁。它是一個用來構(gòu)建項目的秘方竖席。打開你喜歡的編輯器,并添加如下內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
上述的列表能夠讓你有一個可行的構(gòu)建。你可以通過運行mvn package(目前炫刷,你可以無視“jar will be empty - no content was marked for inclusion!”的警告)
在這節(jié),你可以導入項目到IDE中(大部分現(xiàn)代的Java IDE都內(nèi)置了對Maven的支持)
11.2 添加依賴
Spring Boot提供了一系列的Starters使你能添加jar包到classpath中郁妈。我們的應用已經(jīng)在POM中的parent節(jié)點使用了spring-boot-starter-parent浑玛。它是一個特殊的starter,能夠提供有用的Maven默認值。它同時也提供依賴管理噩咪,你就可以省略依賴的versions標簽顾彰。
其他的Starters提供你在開發(fā)特殊種類應用所需的依賴。因為我們開發(fā)的是一個網(wǎng)頁應用胃碾,所以添加了spring-boot-starter-web這個依賴涨享。在此之前,我們可以通過運行以下的命令來查看目前的項目依賴
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
命令mvn dependency:tree打印了一個樹形的項目依賴仆百。你可以看到spring-boot-web-starter它自身并不提供依賴厕隧。為了添加所需的依賴,編輯你的pom.xml并立即在parent節(jié)下面添加以下的依賴spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
如果你再次運行mvn dependency:tree的話俄周,你可以看到一系列額外的依賴吁讨,包括Tomcat web服務(wù)器和Spring Boot
11.3 編寫代碼
為了完成我們的程序,我們需要創(chuàng)建一個Java文件峦朗。Maven默認從src/main/java中編譯資源建丧,所以你需要創(chuàng)建那樣的文件目錄結(jié)構(gòu)然后添加一個名為src/main/java/Example.java的文件并包含以下代碼:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotion.*;
@RestController
@EnableAutoConfiguration
public class Example{
@RequestMapping("/")
String home(){
return "Hello World";
}
public static void main(String[] args) throws Exception{
SpringApplication.run(Example.class,args)
}
}
雖然這里沒有很多的代碼,但卻發(fā)生很多我們看不到的事情波势,我們在不知不覺中經(jīng)歷了下一些節(jié)章節(jié)中重要的部分翎朱。
11.3.1 @RestController和@RequestMapping 注解
在我們的Example類中第一個注解就是@RestController.我們都知道它是一個固定的注解。它為閱讀代碼的人提供了暗示尺铣,對Spring來說這個類扮演了重要的角色闭翩。在這個例子中,我們的類是一個web @Controller ,所以在處理發(fā)起的web請求時迄埃,Spring就解析它們疗韵。
@ReqeustMapping注解提供了路由信息。它告訴Spring任何/路徑的HTTP請求都應該被映射到home方法中侄非。@RestController注解則告知Spring將字符串結(jié)果直接返回給請求者蕉汪。
@RestController和@RequestMapping注解都是Spring MVC注解(它們并不是Spring Boot特有的)流译。詳細信息請閱讀MVC section中的Spring參考文檔。
11.3.2 @EnableAutoConfiguration注解
第二個類級的注解就是@EnableAutoConfiguration者疤。這個注解告知Spring Boot去“猜測”你想怎樣配置Spring福澡,基于你添加的jar依賴。由于spring-boot-starter-web添加了Tomcat和Spring MVC驹马,自動配置則根據(jù)它假設(shè)你正在開發(fā)一個web程序
Starters和Auto-Configuration
自動配置是設(shè)計來搭配Starters更好工作的革砸,但這兩個概念并不是直接捆綁在一起的。你可以隨心選擇starters以外的jar依賴糯累。Spring Boot照樣能很好地自動配置你的應用算利。
11.3.3 main方法
關(guān)于我們應用的最后一部分是main方法,這就是應用入口的一個標準方法泳姐,它遵循Java的慣例效拭。我們通過調(diào)用run將main方法委托給了SpringApplication類。SpringApplication啟動我們的應用胖秒,開啟Spring缎患,相應地啟動自動配置好的Tomcat web服務(wù)器。我們需要將Example.class作為一個參數(shù)傳給run方法以告知SpringApplication哪個是基本的Spirng組件阎肝。通過args數(shù)組暴露任何的命令行參數(shù)挤渔。