咱們先從 Hello World! 開始。java
假設已經裝好 Java SDK 8 。git
安裝構建工具github
咱們選用 gradle 來構建項目。web
https://gradle.org/install 這個網頁會告訴你如何安裝。spring
咱們也能夠選擇手動安裝,先從 https://gradle.org/releases 下載案裝包。瀏覽器
當前最新版是 v4.0,咱們就下載這個版本,點 「complete」,是一個ZIP包,下載完成後解壓到任意目錄便可。app
解壓後,目錄中文件以下編輯器
咱們還須要將 bin 目錄放到環境變量中,我當前用的是 Windows 10 系統,gradle 的 bin 目錄是 「D:\JavaEE\gradle-4.0\bin」,能夠放到系統變量後者用戶變量的「PATH」中,以下函數
而後打開控制檯,輸入命令 「gradle -v」,若是顯示以下圖,說明 gradle 安裝成功。spring-boot
在任意目錄下新建一個名爲「spring-hello」目錄並進入到目錄中,名字任取,
mkdir spring-hello && cd spring-hello
建立一個名爲 build.gradle 的文本文件,
cd . > build.gradle
建立目錄 src\main\java\com\hang 並進入到目錄中
mkdir src\main\java\com\hang && cd src\main\java\com\hang
在目錄 src\main\java\com\hang 建立Java源文件 App.java
cd . > App.java
在目錄 src\main\java\com\hang 下新建 controller 目錄並進入到 controller 目錄
mkdir controller && cd controller
建立名爲 HelloController.java的源文件
cd . > HelloController.java
最後目錄結構以下
目錄 src\main\java 用來放Java源碼,必須這樣命名。com\hang 是Java的包名,com\hang\controller 也是包名,只要符合Java的包名規範便可,沒有特定要求。
用記事本或者任何其餘文本編輯器打開 App.java,輸入如下內容
package com.hang; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App { public static void main(String[] args){ SpringApplication.run(App.class, args); } }
在 HelloController.java輸入如下內容:
package com.hang.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/") public String hello(){ return "Hello World!"; } }
在 build.gradle 輸入如下內容
buildscript { repositories { jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE") } } apply plugin: 'java' apply plugin: 'org.springframework.boot' repositories { jcenter() } dependencies { compile 'org.springframework.boot:spring-boot-starter-web' }
咱們先編譯下項目,在 spring-hello 目錄中執行命令
gradle build
這個編譯過程要花點時間,由於 Gradle 要到網上下載依賴庫。
若是出現下圖信息,說明編譯成功
到這,咱們就能夠開始運行項目了,執行命令
gradle bootRun
控制檯會打出以下圖信息
「Tomcat started on port(s): 8080 (http)」這一句說咱們的 Spring Boot 程序使用的是 8080 端口,
「Started App in 2.132 seconds (JVM running for 2.4)」 這一句說明個人Spring Boot 程序已經啓動成功了。
打開瀏覽器,輸入 http://localhost:8080/
若是出現 「 Hello World!」說明咱們的程序已經能正確運行。
build.gradle 是構建配置文件,用的是 groovy 語言。gradle就是根據build.gradle來構建咱們的Spring Boot項目的。
gradle自己是不知道如何構建Spring Boot程序的,但gradle支持插件,因此咱們引入Spring Boot的Gradle插件,就能夠構建Spring Boot程序了。
buildscript { repositories { jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE") } }
以上代碼就是引入Spring Boot的Gradle插件,名叫「spring-boot-gradle-plugin」,版本是「1.5.4.RELEASE」,repositories {jcenter()}是告訴Gradle去jcenter庫找這個插件,jcenter庫在https://bintray.com/bintray/jcenter,國內訪問有些慢。只有加入了這個 buildscript後,下邊的apply plugin: 'org.springframework.boot' 這一句才能起做用。
apply plugin: 'java'
表示使用 Java插件,咱們是用Java寫的,須要這個插件,Java插件是Gradle的內置插件,因此能夠直接使用。
apply plugin: 'org.springframework.boot'
使用 org.springframework.boot這個插件來構建和運行咱們的Spring Boot程序,因爲這個插件不是Gradle內置的插件,因此要先在 buildscript中引入,前文已經提到。上文咱們運行Spring Boot程序用到的命令「gradle bootRun」也是來自於這個插件。
repositories { jcenter() } dependencies { compile 'org.springframework.boot:spring-boot-starter-web' }
上面的代碼意思是,咱們的程序要依賴「spring-boot-starter-web」這個庫,這個庫要從jcenter下載。
至此,build.gradle文件已經解釋完。也許有人會問,怎麼就知道用 「gradle bootRun」來運行程序呢,你們能夠在項目目錄下執行
gradle tasks
Gradle是基於任務的,這個命令就是列出當前項目中支持的任務。
注意紅框內,第一條任務就是「bootRun」,因此咱們能夠經過「gradle bootRun」這一句運行咱們的Spring Boot程序。
因爲 Spring Boot 就是一個 Java 應用程序,因此咱們的先寫一個程序入口 main 函數,和正常的 Java 程序的 main 函數沒有什麼區別。
SpringApplication.run(App.class, args);
這個語句表示直接啓動 Spring 應用。
最重要的是「@SpringBootApplication」 這個註解,Spring Boot 把 Sping 之前很複雜的 XML 配置用註解來實現,徹底自動化的配置。這個註解會自動地去加載配置,這個註解中還包含了一個掃描子包 Controller 的動做,會自動掃描子包,並完成配置。
@RestController public class HelloController { @GetMapping("/") public String hello(){ return "Hello World!"; } }
HelloController.java 很簡單,只有幾行代碼。
@RestController 表示這個一個Restful API,
@GetMapper 註解表示一個 Get 請求,若是有 Get 請求訪問根目錄,好比咱們在瀏覽器中輸入「http://localhost:8080/」就執行hello()函數,函數直接返回「Hello World!」。相似的請求還有:@PostMapper, @PutMapper, DeleteMapper,分別對應着HTTP協議的POST、PUT、DELETE三個請求方法。
源碼 https://github.com/jinghang/commerce/tree/master/0x01/java-demo