5.第一個Spring Boot應用

使用Java開發(fā)一個簡單的"Hello World!" web應用,來強調下Spring Boot的一些關鍵特性。

我們將使用Maven構建該項目,因為大多數IDEs都支持它。

在開始前,你需要打開一個終端,檢查是否安裝可用的Java版本和Maven:

java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

mvn -v
Apache Maven  3.5.0 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home:  C:\Softwares\apache-maven-3.5.0\bin\..
Java version: 1.8.0_45, vendor: Oracle Corporation

1.創(chuàng)建POM

我們需要以創(chuàng)建一個Maven pom.xml文件作為開始。該pom.xml是用來構建項目的處方。打開你最喜歡的文本編輯器,然后添加以下內容:

<?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>1.5.8.RELEASE</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

這會給你一個可運轉的構建,你可以通過運行 mvn package 測試它(現在你可以忽略"jar將是空的-沒有包含任何內容!"的警告)。

2.添加classpath依賴

Spring Boot提供很多"Starter POMs",這能夠讓你輕松的將jars添加到你的classpath下。我們的示例程序已經在POM的partent節(jié)點使用了 spring-boot-starter-parent 。
  spring-boot-starter-parent 是一個特殊的starter,它提供了有用的Maven默認設置。同時,它也提供了一個 dependency-management 節(jié)點,這樣對于”blessed“依賴你可以省略version標記。
  其他的”Starter POMs“簡單的提供依賴,這些依賴可能是你開發(fā)特定類型的應用時需要的。由于正在開發(fā)一個web應用,我們將添加一個 spring-boot-starter-web 依賴-但在此之前,讓我們看下目前所擁有的:

mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree 命令以樹形表示來打印你的項目依賴。你可以看到 spring-boot-starter-parent 本身并沒有提供依賴。編輯我們的pom.xml,并在parent節(jié)點下添加 spring-boot-starter-web 依賴:

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

如果再次在pom.xml所在文件目錄運行 mvn dependency:tree ,你將看到現在有了一些其他依賴,包括Tomcat web服務器和Spring Boot自身。

3.編寫代碼

為了完成應用程序,我們需要創(chuàng)建一個單獨的Java文件。Maven默認會編譯 src/main/java 下的源碼,所以你需要創(chuàng)建那樣的文件結構,然后添加一個名為 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);
}
}

盡管這里沒有太多代碼,但很多事情正在發(fā)生。讓我們分步探討重要的部分。

3.1@RestController和@RequestMapping注解

  • 我們的Example類上使用的第一個注解是 @RestController 。這被稱為一個構造型(stereotype)注解。它為閱讀代碼的人們提供建議。對于Spring,該類扮演了一個特殊角色。在本示例中,我們的類是一個web @Controller ,所以當處理進來的web請求時,Spring會詢問它。
  • @RequestMapping 注解提供路由信息。它告訴Spring任何來自"/"路徑的HTTP請求都應該被映射到 home 方法。
  • @RestController 注解告訴Spring以字符串的形式渲染結果,并直接返回給調用者。

注: @RestController 和 @RequestMapping 注解是Spring MVC注解(它們不是Spring Boot的特定部分)。

3.2@EnableAutoConfiguration注解

  • 第二個類級別的注解是 @EnableAutoConfiguration 。這個注解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。
  • 由于 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發(fā)一個web應用并相應地對Spring進行設置。
  • Starter POMs和Auto-Configuration:設計auto-configuration的目的是更好的使"Starter POMs",但這兩個概念沒有直接的聯系。你可以自由地挑選starter POMs以外的jar依賴,并且Spring Boot將仍舊盡最大努力去自動配置你的應用。

3.3main方法

  • 我們的應用程序最后部分是main方法。這只是一個標準的方法,它遵循Java對于一個應用程序入口點的約定。我們的main方法通過調用run,將業(yè)務委托給了Spring Boot的SpringApplication類。SpringApplication將引導我們的應用,啟動Spring,相應地啟動被自動配置的Tomcat web服務器。我們需要將 Example.class 作為參數傳遞給run方法來告訴SpringApplication誰是主要的Spring組件。為了暴露任何的命令行參數,args數組也會被傳遞過去。
4.運行示例
  • 到此我們的應用應該可以工作了。由于使用了 spring-boot-starter-parent POM,這樣我們就有了一個非常有用的run目標,我們可以用它啟動程序。在項目根目錄下輸入 mvn spring-boot:run 來啟動應用:

如果使用一個瀏覽器打開localhost:8080,你應該可以看到以下輸出:
Hello World!

  • 點擊 ctrl-c 溫雅地關閉應用程序。

創(chuàng)建一個可執(zhí)行jar

  • 讓我們通過創(chuàng)建一個完全自包含的可執(zhí)行jar文件來結束我們的示例,該jar文件可以在生產環(huán)境運行??蓤?zhí)行jars(有時候被成為胖jars "fat jars")是包含你的編譯后的類和你的代碼運行所需的依賴jar的存檔。

  • 可執(zhí)行jars和Java:Java沒有提供任何標準的加載內嵌jar文件(即jar文件中還包含jar文件)的方法。如果你想發(fā)布一個自包含的應用這就是一個問題。為了解決該問題,很多開發(fā)者采用"共享的"jars。一個共享的jar簡單地將來自所有jars的類打包進一個單獨的“超級jar”。采用共享jar方式的問題是很難區(qū)分在你的應用程序中可以使用哪些庫。在多個jars中如果存在相同的文件名(但內容不一樣)也會是一個問題。

  • Spring Boot采取一個不同的途徑,并允許你真正的內嵌jars。

  • 為了創(chuàng)建可執(zhí)行的jar,需要將 spring-boot-maven-plugin 添加到我們的pom.xml中。在dependencies節(jié)點下插入以下內容:

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

注: spring-boot-starter-parent POM包含用于綁定repackage目標的 <executions> 配置。如果你不使用parent POM,你將需要自己聲明該配置。

  • 保存你的pom.xml,然后從命令行運行 mvn package :

      [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ myproject ---
      [INFO] Building jar: D:\tests\target\myproject-0.0.1-SNAPSHOT.jar
      [INFO] ----------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ----------------------------------------------------------------------
      [INFO] Total time: 4.515 s
      [INFO] Finished at: 2017-10-26T17:19:05+08:00
      [INFO] Final Memory: 19M/212M
    
  • 為了運行該應用程序,你可以使用 java -jar 命令:

  • 和以前一樣,點擊 ctrl-c 來溫柔地退出程序。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容