使用Gradle構建Spring boot專案

rui_chou發表於2017-03-15

使用Spring Initializr生成最初的專案

官方網站:https://start.spring.io/ 提供了spring boot專案maven和gradle方式的構建,使用ant的選手們去廁所哭吧,這是來至官方的歧視。
這裡寫圖片描述
該專案包含:

1.程式啟動入口,XXApplication.java檔案,如下所示:

這裡寫圖片描述
該檔案需要放在專案目錄最上層,不能放在根目錄下。命名不能是Application。

2.位於src/main/resources下的程式配置檔案application.properties

3.一個什麼都不能幹的單元測試檔案。

總體來說沒有什麼用,接下來還是自己幹吧!

gradle父配置

在父目錄build.gradle下,引入spring boot開發外掛,及所有子專案都會用到的測試模組spring-boot-starter-test

buildscript {
    ext {
        springBootVersion = '1.5.2.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

allprojects {
    apply plugin: 'eclipse'
    version = '0.0.1-SNAPSHOT'
}

subprojects {

    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'

    sourceCompatibility = 1.8

    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
    }

    dependencies {
        testCompile("org.springframework.boot:spring-boot-starter-test")
    }
}

在子專案中引入web模組,即spring-boot-starter-web

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")  
}

Rest服務

建立的類一定不能在啟動類的上級目錄,否則Spring無法掃描到該檔案,你會懵逼的發現程式啟動正常,但你的服務訪問不到。
檔案內容:

@RestController
public class HelloSpringBootController {

    @RequestMapping("/hello")
    public String helloSpringBoot() {
        return "hello Spring boot";
    }
}

@RestController = @Controller + @ResponseBody
啟動該程式,就可以通過瀏覽器http://localhost:8080/hello下,看到結果了。

測試用例

好的,據說每一個類生來就會有它的測試用例,我們來編寫上面那貨的測試用例。
一般來說,測試使用者放在src/test/main中,類響應的目錄位置,在型別後加上Test即可。
Spring提供有MockMvc方法,用於模擬http請求,進行測試

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class HelloSpringBootControllerTest {

    private MockMvc mvc;

    @Before
    public void befor() {
        mvc = MockMvcBuilders.standaloneSetup(new HelloSpringBootController()).build();
    }

    @Test
    public void helloSpringBootControllerTest() throws Exception {
        mvc.perform(get("/hello"))
            .andExpect(status().isOk())
            .andExpect(content().string(equalTo("hello Spring boot")));
    }
}

跑一次,沒有異常。搞定收工!

參考:http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/

相關文章