讓我們來個(gè)簡單的“Hello World”web應(yīng)用吧。
build.gradle文件
buildscript {
repositories {
jcenter()
maven { url 'http://repo.spring.io/snapshot' }
maven { url 'http://repo.spring.io/milestone' }
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.0.0.M2'
classpath 'io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE'
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
repositories {
jcenter()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile(
"org.springframework.boot:spring-boot-starter-test",
"junit:junit:4.12"
)
}
group 'com.ubicycle'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
Java代碼
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
Example類上的第一個(gè)注解是@RestController,你看代碼時(shí)的一個(gè)提示,對Spring來說,是個(gè)特殊的角色。這個(gè)例子里,我們的類是一個(gè)web@Controller所以當(dāng)有http請求進(jìn)來時(shí),Spring會考慮用它處理。
@RequestMapping提供路由信息,它告訴Spring任何以/為路徑的http請求會被映射到home方法上。@RestController讓Spring直接將String結(jié)果返回給請求者。
@RestController和@RequestMapping都是Spring MVC的注解,不是Spring Boot 特有的注解。
@EnableAutoConfiguration注解
第二個(gè)類級別注解是@EnableAutoConfiguration。這個(gè)注解會讓Spring Boot基于你加到依賴?yán)锏膉ar包“猜”你會怎么樣配置Spring。就像加入spring-boot-starter-web加入了Tomcat和Spring MVC,自動配置會認(rèn)為你在部署一個(gè)web服務(wù)器和相應(yīng)的Spring。
Starters 和 自動配置
自動配置和Starter是好基友(配合),但這兩個(gè)概念又不是直接關(guān)聯(lián)的。你可以自由的選擇Starter以外的依賴包,Spring Boot依然會將自動配置程序做到最好。
main方法
程序的最后一部分是main方法。這只是一個(gè)標(biāo)準(zhǔn)的遵循java規(guī)范的程序入口。通過運(yùn)行這個(gè)main方法代表的是Spring Boot的SpringApplication類。SpringApplication會啟動程序,在自動配置的Tomcat web服務(wù)器里啟動Spring。我們需要將Example.class作為參數(shù)來運(yùn)行方法告訴SpringApplication誰是主要的Spring組件。args array也會傳遞任何通過命令行設(shè)置的參數(shù)。
運(yùn)行程序
此刻是時(shí)候運(yùn)行我們的程序了。因?yàn)槲覀兪褂昧?code>spring-boot-starter-parentPOM,我們就已經(jīng)有了好使的運(yùn)行目標(biāo)讓我們可以啟動程序。在項(xiàng)目的根目錄里執(zhí)行gradle bootRun啟動應(yīng)用:
$ gradle bootRun
:compileJava
:processResources NO-SOURCE
:classes
:bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.0.M2)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打開瀏覽器輸入localhost:8080,就會看到下面的輸出:
Hello World!
按ctrl-c就可以退出程序