本文重點
Spring Boot 快速入門(Spring Boot 2.0及以上)
如何使用Spring Boot 快速入門 快速創建HelloWorld 項目,主要涉及到
1.創建(生成)一個Spring Boot標准項目
2.配置Pom.xml文件
3.編寫示例代碼
4.編寫測試代碼
5.運行和調試
6.打包發布
本文源碼下載 Github-spring-boot-study-helloword
一、Spring Boot 是什么
Spring Boot 是Spring 家族成員之一
Spring Boot 是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。 該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。下面摘自spring boot中文文檔
- 為所有的Spring開發提供一個從根本上更快的和廣泛使用的入門經驗
- 開箱即用,但你可以通過不采用默認設置來擺脫這種方式
- 提供一系列大型項目常用的非功能性特征
- 絕對不需要代碼生成及XML配置
二、Spring Boot 有什么優點
以下談到個人認為的幾點
1.入門門檻低,只要懂程序的java、c#、php、js都能快速入門
2.強大的生態,幾乎沒有什么功能是需要自己從頭開始開發
3.部署方便,獨立服務器也好、雲部署也好、docker也好都非常方便
三、Spring Boot快速入門HelloWord
一般SpringBoot開發的步驟包括
1.生成一個Spring Boot項目
2.配置Pom.xml
3.編輯代碼
4.編寫測試代碼
5.運行
6.打包發布
1. 生成一個Spring Boot項目
這里我們介紹 在瀏覽器中實現一個 http://localhost:8999/hello/say web程序。這里使用IntelliJ IDEA 作為IDE環境來編譯。也可以使用其他IDE。
我們一般采用從IDEA創建Spring Boot項目,見1.2.
1.1 使用start.spring.io創建項目
2)選擇構建工具 Maven Project、Java、Spring Boot 版本 2.1.4 (注意這里文檔版本是2.1.4,但在下面的實踐中2.1.4本地的mvn有問題,后面換成了2.0.0) 、填寫Group、Articfact 及一些工程基本信息,可參考下圖所示:

如上圖一些英文的含義
groupId:groupId分為幾個字段,例如com.companyname,前面的com叫【域】,后面的是你自己起的域名。這里是 com.fishpro
artifactId:artifactId一般是項目名或者模塊名。這里是 springstudy
Dependencies:依賴,輸入web,選擇web
例如公司名稱:baidu,項目名 peach 那么 groupId=com.baidu artifactId=peach 最終在java項目的基本包名為 com.baidu.peach。當然groupId也可以是com.baidu.look 這種形式,完全有開發者自己定義。
本示例項目 groupId=com.fishpro artifactId=springstudy
3)點擊綠色按鈕【Generate Project】生成項目,瀏覽器則自動下載項目,我命名的是springhello,那么下載的是springhello.zip
4)如下圖,下載的位maven項目結構的java項目,使用idea開發工具打開這個文件夾,則會自動加載maven項目。

用 IDEA 打開(open) 文件后,idea自動加載項目的依賴,請稍等片刻,一般在2到5分鍾,這取決於您的網絡和系統性能。
也可以使用 功能,導入文件夾為Maven項目,一路點擊【next】即可。

5)IDEA 導入Spring Boot 的項目結構,截圖如下:

項目結構簡單說明
src/main/java 下是主程序的java代碼存放處
src/resource 是資源文件包括圖片、Css、Javascript等靜態文件和配置文件yml或properties文件
src/test/java 測試代碼
1 .idea #IDEA 軟件特有的文件夾,隱藏文件 2 .mvn #Maven項目特有的文件,隱藏文件 3 src #存放源碼包括了java代碼和配置文件和資源文件 4 main #java代碼 5 java 6 com 7 pringbook 8 SpringstudyApplication #啟動類java文件 9 resource #資源文件包括靜態文件 10 application.properties #項目的配置文件,比如配置服務器端口等 11 test #測試文件夾 12 mvnw #maven項目輔助文件,自動生成 13 mvnw.cmd #maven項目輔助文件,自動生成 14 pom.xml #maven項目配置文件,類似於C#的web.config 15 study.iml #iml 是IDEA軟件的項目標識文件,一般是自動創建的 16 Externel Libraries #lib文件,這個不用管,是自動的
1.2 使用IDEA 創建項目
使用IDEA創建項目,其實也是從 https://start.spring.io/ 創建,只是更為方便,我們一般采用從IDEA創建Spring Boot項目。
注意mac和windows的IDEA創建過程是一樣的。
1)File>New>Project,如下圖選擇Spring Initializr 然后點擊 【Next】下一步

2)填寫GroupId(包名)、Artifact(項目名) 即可。

groupId=com.fishpro
artifactId=springstudy
3)選擇依賴,我們選擇Web

2.配置Pom.xml
注意如果生成項目的時候沒有設置Dependencies,選擇web,那么這里要在Pom.xml中設置,Pom.xml設置依賴也非常的簡單,直接把 <dependency></dependency>的節點拷貝到pom依賴節點中即可。
Pom.xml屬於maven項目結構的項目依賴項配置文件,主要管理第三方包的引用。
默認項目配置了spring-boot-starter和spring-boot-starter-test ,配置如下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
因為示例項目是web項目所以需要引入web模塊,在dependency下增加節點,增加后如下:
<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>
注意,如果IDEA沒有自動導入,那么前往右下角,點擊【Import Changes】

有的時候會出問題了!
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加載spring-boot-starter-web:jar,這個應該是mvn管理器加載問題。去掉里面依賴
答:spring boot 2.1.4的mvn有問題,改成2.0.0就好了。當然這可能是其他原因,我使用IDEA創建的項目就沒有這個問題。
3.編寫代碼
3.1 Web項目的常用目錄結構
通常,我們使用三層結構來編寫。
應用層(Controller)、服務層(Service)、數據層(Dao)
我們也增加對應的包目錄。
3.2 增加Controller包
1)在本示例中,右鍵springstudy包名,新建包名 controller (注意一般是消息)
2)在controller下新建HelloWorldController.java (注意首字母大寫)
3)在HelloWorldController中增加java代碼
@RestController @RequestMapping("/hello") public class HelloWorldController { @RequestMapping("/say") public String say(){ return "Hello World"; } }
3.3 更改Web端口
因我的系統端口默認8080倍nginx占領了,我把本次項目的啟動端口改為8999
在 resources\application.properties 中設置(注意有的網絡教程中是 application.yml 其實這是另一種配置文件格式,就想json和xml 只是格式不同,功能作用一樣)
#設置端口號 server.port=8999
4.編寫測試代碼
測試代碼在 src\test\java下面編寫
1)在本示例中,右鍵 src\test\java\com\fishpro\springstudy包名,新建包名 controller (注意一般是消息)
2)在controller下新建HelloWorldControllerTests.java (注意對應於main下,一般后綴Tests)
3)在HelloWorldControllerTests中增加java代碼
package com.fishpro.springstudy.controller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @RunWith(SpringRunner.class) @SpringBootTest public class HelloWorldControllerTests { private MockMvc mockMvc; @Before public void setUp() throws Exception { mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build(); } @Test public void getHello() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/hello/say").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }
5.運行
5.1 運行程序或調試程序
點擊右上角,綠色運行三角形按鈕,啟動運行,或點擊它旁邊的爬蟲按鈕,進行調試。
或者點擊菜單
Run>Run 'SpringstudyApplication'
Run>Debug 'SpringstudyApplication'

瀏覽器輸入 http://localhost:8999/hello/say

5.2 運行測試用例
右鍵HelloWorldControllerTests.java 選擇Run 'HelloWorldControllerTests' with Coverage

6.打包發布
通常我們一jar方式打包發布,war方式用於單獨的發布到已有的tomcat web服務器中,以后的實踐中再講。
1)選擇 View> Tool Windows>Terminal
2)輸入命令
mvn clean mvn install
在根目錄下有個target 文件夾,

3)模擬服務器環境,運行jar文件,輸入命令,后則可以在瀏覽器中得到結果。
java -jar springstudy-0.0.1-SNAPSHOT.jar
總之,Spring Boot是一個優秀的實戰型框架,他既簡單又強大。
問題
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加載spring-boot-starter-web:jar,這個應該是mvn管理器加載問題。
2.端口問題
默認是8080端口,如果端口被占用了(例如mac的nginx默認是8080),需要修改,那么在 resources\application.properties中設置
#設置端口號 server.port=8999
源碼下載
本文源碼下載Github-spring-boot-study-helloword
點個贊唄
