寫在前面
- SpringBoot版本:2.0.2 RELEASE
- 開發(fā)工具:IDEA 2017.2
- 相關資料:SpringBoot官方文檔
1. 介紹SpringBoot
Spring Boot可以使我們輕松地創(chuàng)建獨立的、生產(chǎn)級的基于Spring的應用程序,由于整合了一些對Spring和第三方庫的配置,我們可以快速開始一個應用程序。大多數(shù)Spring Boot應用程序都需要很少的Spring配置。
我們可以使用Spring Boot來創(chuàng)建Java應用程序,這些應用程序可以通過使用 java -jar 或更傳統(tǒng)的war部署來啟動。Spring Boot還提供了一個運行“spring腳本”的命令行工具。
Spring Boot 為我們都做了什么:
為所有Spring開發(fā)人員提供一種快速而廣泛的入門體驗。
由于整合了一些對Spring和第三方庫的配置解決了深受XML配置困擾的Spring開發(fā)人員的痛點
提供一系列非功能特性,這些特性在大型項目中是常見的(例如嵌入式服務器、安全、度量、健康檢查和外部化配置)。
2.系統(tǒng)環(huán)境需求
Java 8 或 9
Spring 5.0.6 RELEASE 或 以上
-
構建工具
- Maven 3.2 +
- Gradle 4
-
Spring Boot支持以下servlet容器:
- Tomcat 8.5
- Jetty 9.4
- Undertow 1.4
3. 構建項目的方式
1.基于Maven的構建
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>
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.基于Gradle的構建
bulid.gradle 內容如下:
plugins {
id 'org.springframework.boot' version '2.0.2.RELEASE'
id 'java'
}
jar {
baseName = 'myproject'
version = '0.0.1-SNAPSHOT'
}
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
4.開發(fā)Spring Boot 的Hello World 項目(使用maven構建工具)
</br>
第一步: 創(chuàng)建pom文件
<?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>2.0.2.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
第二步:添加依賴
Spring Boot提供了許多“starter”,可以讓您將jar添加到classpath 中。上文已經(jīng)在POM的父部分使用了spring-boot-starter-parent。spring-boot-starter-parent是一個特殊的“starter”,它提供有用的Maven默認值。它還提供了一個依賴管理部分,這樣我們就就可以為關聯(lián)的依賴項省略版本標記。
其他"starter"提供了在開發(fā)特定類型的應用程序時可能需要的依賴項。由于我們正在開發(fā)一個web應用程序,所以我們添加了一個spring-boot-starter-web依賴項。在此之前,我們可以通過運行以下命令查看當前所擁有的內容。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
第三步:編寫代碼
要完成我們的應用程序,我們需要創(chuàng)建一個Java文件,Java文件包含以下代碼:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
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);
}
}
注:
在我們的示例類上的第一個注釋是@RestController。這被稱為構造型注釋。它為閱讀代碼的人們提供了一些提示,并且為Spring提供了一個特定的角色。在本例中,我們的類是一個web @Controller,所以Spring在處理傳入web請求時考慮它。@RequestMapping注釋提供路由信息。它告訴Spring,任何帶有/ path的HTTP請求都應該映射到home方法。@RestController注釋告訴Spring將生成的字符串直接呈現(xiàn)給調用者。
第二個類級別注釋是@EnableAutoConfiguration。這個注釋告訴Spring Boot基于您添加的jar依賴項“猜測”您想如何配置Spring,。因為Spring-boot-starter-web添加了Tomcat和Spring MVC,所以自動配置假設您正在開發(fā)一個web應用程序,并相應地設置Spring。
我們的應用程序的最后一部分是主方法。這只是遵循應用程序入口點的Java約定的標準方法。通過調用run,我們的main方法委托給Spring Boot的SpringApplication類。SpringApplication引導我們的應用程序啟動Spring,而Spring又啟動了自動配置的Tomcat web服務器。我們需要通過例子。類作為運行方法的參數(shù),以告訴SpringApplication是主Spring組件。args數(shù)組也被傳遞,以公開任何命令行參數(shù)。
第四步:運行程序:
運行main方法,或者在根目錄運行 mvn spring-boot: run命令。
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打開瀏覽器,輸入localhost:8080,你可以看到
Hello World!
第五步:創(chuàng)建可執(zhí)行的jar
將下列代碼添加到pom.xml文件中:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
保存文件,并在命令行輸入maven package,可以看到:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.2.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
這時你會發(fā)現(xiàn)target目錄下多了一個名為myprojectname-0.0.1-SNAPSHOT.jar的文件,文件大概10MB,如果你想查看文件的詳細內容,可以使用
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
如果你想運行,可以使用 java -jar,如下:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
若知后事如何,且聽下回分解~