從本篇博客開始,咱們開始進入Spring Boot的世界,它的出現使Spring的開發變得更加簡潔,所以一經推出受到衆多程序員的喜好。php
做爲Spring Boot系列的第一篇博客,咱們先來說解下如何搭建Spring Boot項目。html
若是你直接就使用的是Spring Boot,建議你有時間能夠學習下Spring,這樣更能體會到Spring Boot帶來的便利。java
Spring系列博客地址:www.cnblogs.com/zwwhnly/cat…。git
首先,在瀏覽器中,輸入 start.spring.io/,會看到以下界面:程序員
從上圖能夠看出,Project默認值是Maven Project,Language默認值是Java,Spring Boot默認版本是2.1.9,由於符合咱們的需求,因此這3項咱們不作修改。github
而後填寫項目信息,即Project Metadata項,以下所示:web
上圖中的Group,可理解爲組織,通常爲域名反過來,若是域名是zwwhnly.com,這裏就填com.zwwhnly。spring
Artifact,可理解爲項目名,好比我這裏填寫的是springboot-action。apache
接着選擇依賴項,好比要添加Web依賴項,這裏能夠按關鍵字搜索Web依賴項,以下所示:瀏覽器
也能夠按分類找到Web依賴項,以下所示:
無論以哪一種方式添加,最終的結果都是下面這樣的:
最後,點擊」Generate「按鈕生成項目代碼:
解壓後的代碼目錄以下圖所示:
從圖中能夠看出,此處生成的其實就是一個簡單的基於Maven的項目,你可使用本身喜歡的開發工具打開該項目,好比IntelliJ IDEA。
首先,打開開發工具IntelliJ IDEA,依次點擊菜單File--New--Project打開新建項目對話框,先選中左側的「Spring Initializr」,而後選擇項目要使用的JDK版本,如1.8,點擊"Next"按鈕:
按照下圖中的提示填寫好項目信息、打包方式、Java版本等信息,點擊「Next"按鈕:
選擇項目要使用的依賴項(如Spring Web)以及Spring Boot的版本(如2.1.9),點擊」Next「按鈕:
確認好項目名稱和項目要保存的路徑,點擊「Finish"按鈕,若是保存的路徑不存在,會提示是否自動建立該目錄,點擊「OK」便可:
建立好的項目結構圖以下所示:
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zwwhnly</groupId>
<artifactId>springboot-action</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-action</name>
<description>Spring Boot Action Code</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
複製代碼
關於pom.xml的整個講解,能夠參考我以前寫的博客:Spring入門(四):使用Maven管理Spring項目 ,這裏咱們只講解下該文件和以前不一樣的地方。
第1個值得注意的地方是文件中的parent標籤:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
複製代碼
該標籤用於添加Spring Boot的父級依賴,其中spring-boot-starter-parent是一個特殊的starter,它用來提供相關的Maven默認依賴,使用它以後,經常使用的包依賴能夠省去version標籤。
舉個具體的例子,咱們往pom.xml中添加以下依賴:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
複製代碼
和默認的2個依賴同樣,咱們並未指定該依賴的version版本,可是在Maven的依賴樹裏,卻能看到這3個依賴使用的版本,以下所示:
這就是parent標籤中引用spring-boot-starter-parent的做用,咱們能夠經過如下文件來查看它都提供了哪些依賴的默認版本信息:
在該文件中,咱們能夠找到spring-boot-starter-web、spring-boot-starter-test、amqp-client指定的版本信息:
<properties>
<rabbit-amqp-client.version>5.4.3</rabbit-amqp-client.version>
</properties>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>${rabbit-amqp-client.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
</dependencies>
複製代碼
能夠發現,指定的版本正是Maven依賴樹上看到的版本信息。
不過能夠經過指定version版原本覆蓋默認的版本,好比咱們將amqp-client的依賴信息修改成:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.0</version>
</dependency>
複製代碼
此時在Maven依賴樹看到的amqp-client的版本就變爲了5.7.0:
第2個值得注意的地方是,文件中添加了Spring Boot的編譯插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
複製代碼
這裏咱們也沒有指定version,因此使用的是默認的版本2.1.9.RELEASE(和上面使用amqp-client的原理同樣):
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.9.RELEASE</version>
</plugin>
複製代碼
找到啓動類SpringbootActionApplication(名稱通常爲ArtifactId+Application),看到默認代碼以下:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootActionApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
複製代碼
爲方便演示,咱們暫時在啓動類中新增一個Api接口:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot";
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
複製代碼
在啓動類中右鍵,而後選擇運行項目,看到以下信息:
在瀏覽器中訪問http://localhost:8080/,會看到以下信息:
@RestController註解和@RequestMapping註解實際上是Spring MVC相關的註解,並非Spring Boot特有的,關於Spring MVC的相關技術,能夠查看如下博客:
其實剛剛啓動項目時咱們已經看到了Spring Boot的Banner,那麼你不由要問什麼是Spring Boot的Banner呢?
其實就是下圖中紅色標記的地方:
也許有人會以爲每次啓動都顯示這些信息並無實際意義,那麼咱們如何關閉它呢?
原代碼:
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
複製代碼
修改後:
public static void main(String[] args) {
//SpringApplication.run(SpringbootActionApplication.class, args);
SpringApplication springApplication = new SpringApplication(SpringbootActionApplication.class);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
複製代碼
默認狀況下,新建的Spring Boot項目都有個空的application.properties配置文件,能夠添加以下配置:
spring.main.banner-mode=off
複製代碼
從新啓動項目,效果以下圖所示:
源碼地址:github.com/zwwhnly/spr…,歡迎下載。
汪雲飛《Java EE開發的顛覆者:Spring Boot實戰》
最後,歡迎關注個人微信公衆號:「申城異鄉人」,全部博客會同步更新。