環境
spring-boot-starter-parent 是一個特殊的starter,它提供了有用的Maven默認設置。同時,它也提供了一個 dependency-management 節點,這樣對於”blessed“依賴你可以省略version標記;spring-boot-starter-parent 本身並沒有提供依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.BUILD-SNAPSHOT</version> </parent>
Maven用戶可以繼承 spring-boot-starter-parent 項目來獲取合適的默認設置。該父項目提供以下特性:
注:你應該只需要在該依賴上指定Spring Boot版本。如果導入其他的starters,你可以放心的省略版本號。
使用沒有父POM的Spring Boot
不是每個人都喜歡繼承 spring-boot-starter-parent POM。你可能需要使用公司標准parent,或你可能傾向於顯式聲明所有Maven配置。
如果你不使用 spring-boot-starter-parent ,通過使用一個 scope=import 的依賴,你仍能獲取到依賴管理的好處:
<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.3.0.BUILD-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
改變Java版本
spring-boot-starter-parent 選擇相當保守的Java兼容策略。如果你遵循我們的建議,使用最新的Java版本,你可以添加一個 java.version 屬性:
<properties> <java.version>1.8</java.version> </properties>
其他的”Starter POMs“簡單的提供依賴,這些依賴可能是你開發特定類型的應用時需要的。由於正在開發一個web應用,我們將添加一個 spring-boot-starter-web 依賴;如果依賴spring-boot-starter-parent父工程,版本號可以省略
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.3.5.RELEASE</version> </dependency>
編寫代碼
為了完成應用程序,我們需要創建一個單獨的Java文件。Maven默認會編譯 src/main/java 下的源碼,所以你需要創建那樣的文件結構,然後添加一個名為 src/main/java/Example.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); } }
使用"default"包
當類沒有包含 package 聲明時,它被認為處於 default package 下。通常不推薦使用 default package ,並應該避免使用它。因為對於使用 @ComponentScan , @EntityScan 或 @SpringBootApplication 注解的Spring Boot應用來說,來自每個jar的類都會被讀取,這會造成一定的問題。
注:我們建議你遵循Java推薦的包命名規范,使用一個反轉的域名(例如 com.example.project )
定位main應用類
我們通常建議你將main應用類放在位於其他類上面的根包(root package)中。通常使用 @EnableAutoConfiguration 注解你的main類,並且暗地裡為某些項定義了一個基礎“search package”。例如,如果你正在編寫一個JPA應用,@EnableAutoConfiguration 注解的類所在包將被用來搜索 @Entity 項。
使用根包允許你使用 @ComponentScan 注解而不需要定義一個 basePackage 屬性。如果main類位於根包中,你也可以使用 @SpringBootApplication 注解。
運行事例
我們的應用程序最後部分是main方法。這只是一個標准的方法,它遵循Java對於一個應用程序入口點的約定。我們的main方法通過調用run,將業務委托給了Spring Boot的SpringApplication類。SpringApplication將引導我們的應用,啟動Spring,相應地啟動被自動配置的Tomcat web服務器。我們需要將 Example.class 作為參數傳遞給run方法來告訴SpringApplication誰是主要的Spring組件。為了暴露任何的命令行參數,args數組也會被傳遞過去。
如果使用一個浏覽器打開http://localhost:8080,你應該可以看到以下輸出:
Hello World!