Spring Boot 項目構建與解析

構建 Maven 項目 java

  • 經過官方的 Spring Initializr 工具來產生基礎項目,訪問 http://start.spring.io/ ,以下圖所示,該頁面提供了以Maven構建Spring Boot 項目的功能。

  • 選擇構建工具 Maven Project,Spring Boot 版本選擇 1.5.4,填寫 Group 和 Artifact 信息,在Search for dependencies 中能夠搜索須要的其餘依賴包,這裏咱們須要實現 RESTful API,因此能夠添加 Web 依賴。
  • 點擊 Generate Project 按鈕下載項目的壓縮包,而且解壓項目包
  • 使用 IDE 導入項目,以 Intellij IDEA 14 爲例,從菜單中選擇 File->New->Project from Existing Sources…,選擇解壓的項目文件夾 的 POM.xml 文件,並點擊 OK 按鈕,一直點擊 Next ,這樣咱們就建立了一個最基礎的Spring Boot 工程

工程結構解析 web

如上圖所示,Spring Boot 的基礎結構有三大塊(具體路徑根據用戶生成項目時填寫的Group和Artifact有所差別) spring

  • src/main/java:主程序入口 SpringbootDemoApplication,能夠經過直接運行該類來啓動 Spring Boot應用
  • src/main/resources:配置目錄,該目錄用來存放應用的一些配置信息,好比應用名、服務端口、數據庫配置等。因爲咱們應用了Web模塊,所以產生了 static目錄與templates目錄,前者用於存放靜態資源,如圖片、CSS、JavaScript等;後者用於存放Web頁面的模板文件。
  • src/test:單元測試目錄,生成的 SpringbootDemoApplicationTests 經過 JUnit4實現,能夠直接用運行 Spring Boot應用的測試。

Maven配置分析 數據庫

打開當前工程下的 pom.xml 文件,能夠看到以下關鍵配置: 服務器

  • 設置當前項目的父項目,配置以下

        <parent>mvc

                <groupId>org.springframework.boot</groupId>app

                <artifactId>spring-boot-starter-parent</artifactId>函數

                <version>1.5.4.RELEASE</version>spring-boot

                <relativePath/> <!-- lookup parent from repository -->工具

        </parent>

  • 設置項目源碼文件的編碼和JDK版本,配置以下

        <properties>

                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

                <java.version>1.8</java.version>

        </properties>

  • 設置項目依賴,spring-boot-starter-web 項目爲全棧Web開發模塊,包含嵌入式 Tomcat、Spring MVC;spring-boot-starter-test項目爲通用測試模塊,包含 JUnit、Hamcrest、Mockito 配置以下

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

實現 RESTful API

在Spring Boot 中建立一個RESTFul API 的實現代碼同 Spring MVC同樣,只是不須要Spring MVC那樣先作不少配置,步驟以下:

  • 新建 HelloController 類,代碼以下:

    @RestController

    public class HelloController {

            @RequestMapping ("/hello")

            public String index() {

                    return "Hello World";

            }

    }

  • 啓動應用,經過 http://localhost:8080/hello ,咱們能夠看到返回了預期的結果:Hello World

啓動 Spring Boot 應用

啓動 Spring Boot 應用的方式不少種:

  • 做爲一個Java應用程序,能夠直接經過運行擁有的main函數的類來啓動
  • 在服務器上部署運行時,一般先使用 mvn install 將應用打包成 jar包,再經過 java -jar xxx.jar 來啓動應用

編寫單元測試

在Spring Boot 中實現單元測試很方便,咱們打開 src/test 下的單元測試入口 SpringbootDemoApplicationTests 類,編寫一個簡單的單元測試來模擬 HTTP 請求,測試代碼以下:

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.setup.MockMvcBuilders;

   

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

   

@RunWith (SpringRunner.class)

@SpringBootTest

public class SpringbootDemoApplicationTests {

   

        private MockMvc mvc;

   

        @Before

        public void setUp() {

                mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();

        }

   

        @Test

        public void helloTest() throws Exception {

                mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON_UTF8))

                                .andExpect(status().isOk())

                                .andExpect(content().string("Hello World"));

        }

   

}

代碼解析以下:

  • @RunWith (SpringRunner.class):引入Spring 對JUnit4的支持
  • MockMvc 對象:用於模擬調用 Controller 的接口發起請求,在 helloTest 測試用例方法中,perform 函數執行一次請求調用,accept 用於執行接收的數據類型,andExpect 用於判斷接口返回的指望值
  • @Before:JUnit中定義在測試用例 @Test 內容執行前預加載的內容,這裏用於初始化 MockMvc 實例
相關文章
相關標籤/搜索