用spring boot 來建立第一個application

spring boot  來建立一個簡單的「Hello World!」Web應用程序,該應用程序突出了Spring Boot的一些主要功能。咱們使用Maven來構建這個項目,由於大多數IDE都支持它。html

 

在開始以前,打開終端並運行如下命令以確保安裝了有效的Java和Maven版本:java

1 $ java -version
2 java版「1.8.0_102」
3 Java(TM)SE運行時環境(版本1.8.0_102-b14)
4 Java HotSpot(TM)64位服務器VM(版本25.102-b14,混合模式)
1 $ mvn -v
2 Apache Maven 3.5.4(1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:003 Maven home:/usr/local/Cellar/maven/3.3.9/libexec
4 Java版本:1.8.0_102,供應商:Oracle Corporation
此示例須要在其本身的文件夾中建立。後續說明假定您已建立了一個合適的文件夾,而且它是您當前的目錄。
 

4.1  建立POM

咱們須要從建立Maven pom.xml文件開始。pom.xml是用來構建項目的配方。打開您喜歡的文本編輯器並添加如下內容:web

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.example</groupId>
 7     <artifactId>myproject</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9 
10     <parent>
11         <groupId>org.springframework.boot</groupId>
12         <artifactId>spring-boot-starter-parent</artifactId>
13         <version>2.2.0.M2</version>
14     </parent>
15 
16     <!-- Additional lines to be added here... -->
17 
18     <!-- (you don't need this if you are using a .RELEASE version) -->
19     <repositories>
20         <repository>
21             <id>spring-snapshots</id>
22             <url>https://repo.spring.io/snapshot</url>
23             <snapshots><enabled>true</enabled></snapshots>
24         </repository>
25         <repository>
26             <id>spring-milestones</id>
27             <url>https://repo.spring.io/milestone</url>
28         </repository>
29     </repositories>
30     <pluginRepositories>
31         <pluginRepository>
32             <id>spring-snapshots</id>
33             <url>https://repo.spring.io/snapshot</url>
34         </pluginRepository>
35         <pluginRepository>
36             <id>spring-milestones</id>
37             <url>https://repo.spring.io/milestone</url>
38         </pluginRepository>
39     </pluginRepositories>
40 </project>

上面的清單應該爲您提供有效的構建。您能夠經過運行來測試它mvn package(如今,您能夠忽略「jar將爲空 - 沒有內容標記爲包含!」警告)。spring

此時,您能夠將項目導入IDE(大多數現代Java IDE包括對Maven的內置支持)。爲簡單起見,咱們繼續爲此示例使用純文本編輯器。

4.2  添加Classpath依賴項

Spring Boot提供了許多「Starters」,能夠將jar添加到類路徑中。咱們的示例應用程序已經spring-boot-starter-parentparent POM部分中使用spring-boot-starter-parent是一個特殊的啓動器,提供有用的Maven默認值。它還提供了一個dependency-management 部分,以便您能夠省略version「祝福」依賴項的標記。apache

其餘「Starters」提供了在開發特定類型的應用程序時可能須要的依賴項。因爲咱們正在開發Web應用程序,所以咱們添加了spring-boot-starter-web依賴項。在此以前,咱們能夠經過運行如下命令來查看當前的內容:數組

1 $ mvn依賴:樹
2 [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

mvn dependency:tree命令打印項目依賴項的樹表示。您能夠看到它spring-boot-starter-parent自己不提供依賴關係。要添加必要的依賴項,請編輯pom.xmlspring-boot-starter-web在該parent部分下方添加 依賴項瀏覽器

1 <dependencies>
2     <dependency>
3         <groupId>org.springframework.boot</groupId>
4         <artifactId>spring-boot-starter-web</artifactId>
5     </dependency>
6 </dependencies>

若是mvn dependency:tree再次運行,您會發現如今有許多其餘依賴項,包括Tomcat Web服務器和Spring Boot自己。服務器

4.3  編寫代碼

要完成咱們的應用程序,咱們須要建立一個Java文件。默認狀況下,Maven編譯源代碼src/main/java,所以您須要建立該文件夾結構,而後添加一個名爲src/main/java/Example.java包含如下代碼的文件mvc

 1 import org.springframework.boot.*;
 2 import org.springframework.boot.autoconfigure.*;
 3 import org.springframework.web.bind.annotation.*;
 4 
 5 @RestController
 6 @EnableAutoConfiguration
 7 public class Example {
 8 
 9     @RequestMapping("/")
10     String home() {
11         return "Hello World!";
12     }
13 
14     public static void main(String[] args) {
15         SpringApplication.run(Example.class, args);
16     }
17 
18 }

雖然這裏的代碼很少,但仍是有不少代碼。咱們將在接下來的幾節中逐步介紹重要部分。app

4.3.1  @RestController@RequestMapping註解

咱們Example班上的第一個註釋@RestController這被稱爲 構造型註釋。它爲閱讀代碼的人提供了提示,而爲Spring提供了特定角色的提示。在這種狀況下,咱們的類是一個Web @Controller,所以Spring在處理傳入的Web請求時會考慮它。

@RequestMapping註釋提供「路由」的信息。它告訴Spring,任何帶/路徑的HTTP請求都應該映射到該home方法。@RestController註解告訴Spring使獲得的字符串直接返回給調用者。

@RestController@RequestMapping註解是Spring MVC的註解。(它們不是Spring Boot特有的。)有關更多詳細信息,請參閱Spring參考文檔中的 MVC部分

4.3.2  @EnableAutoConfiguration註釋

第二個類級註釋是@EnableAutoConfiguration這個註釋告訴Spring Boot根據你添加的jar依賴關係「猜想」你想要如何配置Spring。自從spring-boot-starter-web添加了Tomcat和Spring MVC 以來,自動配置假定您正在開發Web應用程序並相應地設置Spring。

啓動器和自動配置

自動配置旨在與「啓動器」配合使用,但這兩個概念並不直接相關。您能夠自由選擇並在首發以外選擇jar依賴項。Spring Boot仍然盡力自動配置您的應用程序。

4.3.3  「主要」方法

咱們的應用程序的最後一部分是main方法。這只是遵循應用程序入口點的Java約定的標準方法。咱們的main方法SpringApplication經過調用委託給Spring Boot的run。 SpringApplication引導咱們的應用程序,啓動Spring,而後啓動自動配置的Tomcat Web服務器。咱們須要Example.class做爲參數傳遞run方法,以告訴SpringApplication哪一個是主要的Spring組件。該 args數組也被傳遞以公開任何命令行參數。

4.4。運行示例

此時,您的應用程序應該工做。因爲您使用了 spring-boot-starter-parentPOM,run所以您能夠使用一個有用的目標來啓動應用程序。mvn spring-boot:run從根項目目錄中鍵入以啓動應用程序。您應該看到相似於如下內容的輸出:

 1 $ mvn spring-boot:run
 2 
 3   。____ _ __ _ _
 4  / \\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
 5 (()\ ___ |'_ |'_ | |'_ \ / _` | \ \ \ \
 6  \\ / ___)| | _)| | | | | || (_ | |))))
 7   '| ____ | .__ | _ | | _ | _ | | _ \ __,| / / / / /
 8  ========= | _ | ============== | ___ / = / _ / _ / _ /
 9  :: Spring Boot ::(v2.2.0.M2)
10 ....... 。。
11 ....... 。。(此處輸出日誌)
12 ....... 。。
13 ........ 2.222秒啓動示例(JVM運行6.514)

若是您打開Web瀏覽器localhost:8080,您應該看到如下輸出:

1 你好,世界!

要正常退出應用程序,請按ctrl-c

4.5  建立一個可執行的Jar

咱們經過建立一個徹底自包含的可執行jar文件來完成咱們的示例,咱們能夠在生產中運行它。可執行jar(有時稱爲「fat jar」)是包含已編譯類以及代碼須要運行的全部jar依賴項的歸檔。

可執行的jar和Java

Java沒有提供加載嵌套jar文件的標準方法(jar文件自己包含在jar中)。若是您要分發自包含的應用程序,這可能會有問題。

爲了解決這個問題,許多開發人員使用「超級」罐子。uber jar將全部應用程序依賴項中的全部類打包到一個存檔中。這種方法的問題在於很難看出您的應用程序中有哪些庫。若是在多個罐子中使用相同的文件名(但具備不一樣的內容),也可能會有問題。

Spring Boot採用不一樣得方法,讓您直接嵌套jar。

要建立可執行jar,咱們須要添加spring-boot-maven-plugin到咱們的 pom.xml爲此,請在該dependencies部分下方插入如下行

1 <build>
2     <plugins>
3         <plugin>
4             <groupId>org.springframework.boot</groupId>
5             <artifactId>spring-boot-maven-plugin</artifactId>
6         </plugin>
7     </plugins>
8 </build>
所述 spring-boot-starter-parentPOM包括 <executions>配置以結合 repackage目標。若是您不使用父POM,則須要本身聲明此配置。有關詳細信息,請參閱 插件文檔

保存pom.xml並從命令行運行mvn package,以下所示:

 1 $ mvn包
 2 
 3 [INFO]掃描項目......
 4 [信息]
 5 [INFO] ----------------------------------------------- -------------------------
 6 [INFO]構建myproject 0.0.1-SNAPSHOT
 7 [INFO] ----------------------------------------------- -------------------------
 8 [INFO] ....
 9 [INFO] --- maven-jar-plugin:2.4:jar(default-jar)@ myproject ---
10 [INFO]構建jar:/Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
11 [信息]
12 [INFO] --- spring-boot-maven-plugin:2.2.0.M2:從新打包(默認)@ myproject ---
13 [INFO] ----------------------------------------------- -------------------------
14 [信息]創建成功
15 [INFO] ----------------------------------------------- -------------------------

若是你查看target目錄,你應該看到myproject-0.0.1-SNAPSHOT.jar該文件大小應爲10 MB左右。若是你想偷看內部,你能夠使用jar tvf,以下:

1 $ jar tvf target / myproject-0.0.1-SNAPSHOT.jar

您還應該看到目錄中命名myproject-0.0.1-SNAPSHOT.jar.original文件小得多target這是Maven在Spring Boot從新打包以前建立的原始jar文件。

要運行該應用程序,請使用如下java -jar命令:

 1 $ java -jar target / myproject-0.0.1-SNAPSHOT.jar
 2 
 3   。____ _ __ _ _
 4  / \\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
 5 (()\ ___ |'_ |'_ | |'_ \ / _` | \ \ \ \
 6  \\ / ___)| | _)| | | | | || (_ | |))))
 7   '| ____ | .__ | _ | | _ | _ | | _ \ __,| / / / / /
 8  ========= | _ | ============== | ___ / = / _ / _ / _ /
 9  :: Spring Boot ::(v2.2.0.M2)
10 ....... 。。
11 ....... 。。(此處輸出日誌)
12 ....... 。。
13 ........ 2.536秒啓動示例(JVM運行2.864)

打開Web瀏覽器localhost:8080,就能看到如下輸出:

 步驟參考官方文檔:https://docs.spring.io/spring-boot/docs/2.2.0.M2/reference/html/getting-started.html#getting-started-first-application

相關文章
相關標籤/搜索