Spring Boot 快速入門(Spring Boot 2.0及以上)php
如何使用Spring Boot 快速入門 快速建立HelloWorld 項目,主要涉及到java
1.建立(生成)一個Spring Boot標準項目nginx
2.配置Pom.xml文件git
3.編寫示例代碼github
4.編寫測試代碼web
5.運行和調試spring
6.打包發佈docker
本文源碼下載 Github-spring-boot-study-hellowordjson
Spring Boot 是Spring 家族成員之一c#
Spring Boot 是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。 該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。下面摘自spring boot中文文檔
如下談到我的認爲的幾點
1.入門門檻低,只要懂程序的java、c#、php、js都能快速入門
2.強大的生態,幾乎沒有什麼功能是須要本身從頭開始開發
3.部署方便,獨立服務器也好、雲部署也好、docker也好都很是方便
通常SpringBoot開發的步驟包括
1.生成一個Spring Boot項目
2.配置Pom.xml
3.編輯代碼
4.編寫測試代碼
5.運行
6.打包發佈
這裏咱們介紹 在瀏覽器中實現一個 http://localhost:8999/hello/say web程序。這裏使用IntelliJ IDEA 做爲IDE環境來編譯。也可使用其餘IDE。
咱們通常採用從IDEA建立Spring Boot項目,見1.2.
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文件,這個不用管,是自動的
使用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
注意若是生成項目的時候沒有設置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建立的項目就沒有這個問題。
一般,咱們使用三層結構來編寫。
應用層(Controller)、服務層(Service)、數據層(Dao)
咱們也增長對應的包目錄。
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
測試代碼在 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(); } }
點擊右上角,綠色運行三角形按鈕,啓動運行,或點擊它旁邊的爬蟲按鈕,進行調試。
或者點擊菜單
Run>Run 'SpringstudyApplication'
Run>Debug 'SpringstudyApplication'
瀏覽器輸入 http://localhost:8999/hello/say
右鍵HelloWorldControllerTests.java 選擇Run 'HelloWorldControllerTests' with Coverage
一般咱們一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