Spring Boot學習筆記-快速示例

筆者最近在學習Spring Boot的參考指南,很興奮!由於Spring Boot中有太多的亮點值得點讚了,筆者認爲,當你從無到有,經歷過全部的痛點或迷茫以後,忽然有一個「神器」幫你解決了以前的困惑時,你對這個「神器」纔會有更深入的感悟及印象。html

Spring Boot簡介

簡單介紹下Sring Boot:Spring Boot使開發獨立的, 產品級別的基於Spring的應用變得很是簡單, 你只需"just run"。 咱們爲Spring平臺及第三方庫提供開箱即用的設置, 這樣你就能夠有條不紊地開始。多數Spring Boot應用須要不多的Spring配置。java

很明顯,Spring Boot能夠很方便地幫你構建基於Spring開發的應用!web

Spring Boot的主要目標是:spring

  • 爲全部的Spring開發提供一個從根本上更快的和普遍使用的入門經驗。
  • 開箱即用, 但你能夠經過不採用默認設置來擺脫這種方式。
  • 提供一系列大型項目經常使用的非功能性特徵( 好比, 內嵌服務器, 安全, 指標, 健康檢測, 外部化配置) 。
  • 絕對不須要代碼生成及XML配置。

Spring Boot基於Maven的應用

Spring Boot建議使用JDK1.6或更高的版本,但儘管Spring Boot兼容Java 1.6, 若是可能的話, 你應該考慮使用Java最新版本。指南中建議使用JDK8,可見其前衛性呀。瀏覽器

一般推薦使用者使用一個支持依賴管理的構建工具( 好比Maven或Gradle),Spring Boot對這兩種構建工具進行了完美的結合。安全

因爲筆者主要是進行的Web開發,而且使用Maven已久,所以重點記錄Spring Boot + Maven的應用。Maven須要3.2或更高的版本。服務器

Spring Boot不會破壞Maven已有的規則,相反Spring Boot會根據Maven的最佳實踐,給出更方便的配置與操做。app

Maven項目中引入Spring Boot

在pom.xml中添加以下配置便可:less

<!-- Inherit defaults from Spring Boot -->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.3.0.BUILD-SNAPSHOT</version>
</parent>

Spring Boot提供不少"Starter POMs", 這可以讓你輕鬆的將jars添加到你的classpath下。maven

程序已經在POM的partent節點使用了spring-boot-starter-parent。spring-boot-starter-parent是一個特殊的starter,它提供了有用的Maven默認設置,例如項目默認是基於UTF8的編碼,編譯環境默認爲JDK1.6等等。同時,它也提供了一個dependency-management節點, 這樣對於「blessed」依賴你能夠省略version標記。

固然你可能並不須要spring-boot-starter-parent,後續會有「Spring Boot without the parent POM」的辦法。

固然我須要構建一個Spring MVC項目,單單上面的配置是不夠的,還須要另外一個「Starter POM」,只需在pom.xml中添加依賴便可:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

這個spring-boot-starter-web會把開發Spring MVC應用所可能用到的依賴自動地幫你加載進來。能夠經過mvn dependency:tree命令查看。

添加一個Spring Boot的Maven插件,它能夠提供更多的Maven功能。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

這個插件既可使咱們應用mvn spring-boot:run命令來運行程序,也能夠幫咱們二次打包應用爲可運行的jar包!Java沒有提供任何標準的加載內嵌jar文件(即jar文件中還包含jar文件)的方法,Spring Boot採起一個不一樣的途徑,並容許你真正的內嵌jars。

固然要使用插件二次打包這個特性,須要綁定repackage目標的 <executions> 配置。若是你不使用parent POM, 你將須要本身聲明該配置。具體可參見插件文檔

最後,若是你使用的Spring Boot不是release版本,可能須要在pom.xml中添加如下配置:

<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
	<repository>
		<id>spring-snapshots</id>
		<url>http://repo.spring.io/snapshot</url>
		<snapshots><enabled>true</enabled></snapshots>
	</repository>
	<repository>
		<id>spring-milestones</id>
		<url>http://repo.spring.io/milestone</url>
	</repository>
</repositories>
<pluginRepositories>
	<pluginRepository>
		<id>spring-snapshots</id>
		<url>http://repo.spring.io/snapshot</url>
	</pluginRepository>
	<pluginRepository>
		<id>spring-milestones</id>
		<url>http://repo.spring.io/milestone</url>
	</pluginRepository>
</pluginRepositories>

示例要點

上述的項目pom.xml配置完成後,寫一個簡單的SpringMVC的示例。

首先創建一個DemoController。

@RestController
public class DemoController {

    @RequestMapping("/demo")
    String home() {
        return "Hello World!";
    }
}

而後創建一個項目的啓動類,同時「兼職」Spring的Java配置類。

@Configuration
@EnableAutoConfiguration
@ComponentScan   
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

要項目跑起來有經常使用的兩種方式:

  • 使用mvn spring-boot:run命令,固然這多虧了Spring Boot的Maven插件。
  • 先使用mvn package命令將項目打包(maven打包後,Spring Boot Maven插件會將jar包二次打包),而後在命令行運行"java -jar xxx.jar"便可。

**ps:**在項目的target目錄下,xxx.jar.original是Maven打包的原始jar包,xxx.jar是插件的二次打包。

項目跑起來後,瀏覽器地址欄輸入"localhost:8080/demo",驗證"Hello World!"結果。

到此你可能會疑惑,Spring MVC項目裏爲何會有main函數?沒有Servlet容器,項目是怎麼運行起來的呢?

main函數能夠暫時先理解爲Spring Boot應用(基於Spring Boot構建的應用)的獨特運行方式。

Spring Boot打出的jar包之因此有單獨運行的能力,並非脫離了Servlet容器,而是將內嵌的Servlet容器一塊兒打包了!這歸功於上面的spring-boot-starter-web依賴。Sring Boot對多種內嵌容器進行了支持,只須要配置相關的starter依賴便可。

**ps:**查看文檔能夠看出,Spring Boot對Servlet容器的支持,Servlet版本均在3.0以上,須要使用者多瞭解Servlet3.0的機制。傳送門

將應用打包成jar運行,一個好處是你能夠像Java SE那樣來運行程序;更有利的一點是,可執行jars可用於生產部署。因爲它們是自包含的,很是適合基於雲的部署。

相關文章
相關標籤/搜索