用 Spring Boot 實現電商系統 Web API (一)Hello World


我們先從 Hello World! 開始。

一、構建工具

假設已經裝好 Java SDK 8 。

安裝構建工具

我們選用 gradle 來構建項目。

https://gradle.org/install 這個網頁會告訴你如何安裝。

我們也可以選擇手動安裝,先從 https://gradle.org/releases 下載案裝包。

image

當前最新版是 v4.0,我們就下載這個版本,點 “complete”,是一個ZIP包,下載完成后解壓到任意目錄即可。

解壓后,目錄中文件如下

image

我們還需要將  bin 目錄放到環境變量中,我當前用的是 Windows 10 系統,gradle 的 bin 目錄是 “D:\JavaEE\gradle-4.0\bin”,可以放到系統變量后者用戶變量的“PATH”中,如下

image

然后打開控制台,輸入命令 “gradle -v”,如果顯示如下圖,說明 gradle 安裝成功。

image

 

二、新建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

最后目錄結構如下

image

目錄 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 要到網上下載依賴庫。

如果出現下圖信息,說明編譯成功

image

 

五、運行

到這,我們就可以開始運行項目了,執行命令

gradle bootRun

控制台會打出如下圖信息

image

“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/

image

如果出現 “ Hello World!”說明我們的程序已經能正確運行。

 

六、簡要說明

6.1 build.gradle

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是基於任務的,這個命令就是列出當前項目中支持的任務。

image

注意紅框內,第一條任務就是“bootRun”,所以我們可以通過“gradle bootRun”這一句運行我們的Spring Boot程序。

6.2 App.java

由於 Spring Boot 就是一個 Java 應用程序,所以我們的先寫一個程序入口 main 函數,和正常的 Java 程序的 main 函數沒有什么區別。

SpringApplication.run(App.class, args);

這個語句表示直接啟動 Spring 應用。

最重要的是“@SpringBootApplication” 這個注解,Spring Boot 把 Sping 以前很復雜的 XML 配置用注解來實現,完全自動化的配置。這個注解會自動地去加載配置,這個注解中還包含了一個掃描子包 Controller 的動作,會自動掃描子包,並完成配置。

6.3 HelloController.java

@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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM