構建微服務:Spring Boot 入門篇

什么是Spring Boot

Spring Boot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。用我的話來理解,就是Spring Boot其實不是什么新的框架,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包,Spring Boot整合了所有的框架(不知道這樣比喻是否合適)。

使用Spring Boot有什么好處

其實就是簡單、快速、方便!平時如果我們需要搭建一個spring web項目的時候需要怎么做呢?

  1. 配置web.xml,加載spring和spring mvc
  2. 配置數據庫連接、配置spring事務
  3. 配置加載配置文件的讀取,開啟注解
  4. 配置日志文件

...

配置完成之后部署tomcat 調試

...

現在非常流行微服務,如果我這個項目僅僅只是需要發(fā)送一個郵件,如果我的項目僅僅是生產一個積分;我都需要這樣折騰一遍!
但是如果使用spring boot呢?
很簡單,我僅僅只需要非常少的幾個配置就可以迅速方便的搭建起來一套web項目或者是構建一個微服務!

使用Maven構建項目

通過 SPRING INITIALIZR 工具生產基礎項目

總體流程:

  1. 訪問:http://start.spring.io/
  2. 選擇構建工具Maven Project、Spring Boot版本1.3.2以及一些工程基本信息
  3. 點擊Generate Project下載項目壓縮包
  4. 解壓項目包,并用IDE以Maven項目導入,以IntelliJ IDEA 14為例:
  5. 菜單中選擇File–>New–>Project from Existing Sources...
  6. 選擇解壓后的項目文件夾,點擊OK
  7. 點擊Import project from external model并選擇Maven,點擊Next到底為止。
  8. 若你的環(huán)境有多個版本的JDK,注意到選擇Java SDK的時候請選擇Java 7以上的版本

導入Spring-boot 相關依賴

<dependencies>
    <!--核心模塊,包括自動配置支持、日志和YAML-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!--測試模塊,包括JUnit、Hamcrest、Mockito-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--添加支持web的模塊-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!--用于設置熱部署-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

</dependencies>

啟動項目

編寫controller內容

package com.pingkeke.springBoot.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * HelloWorldController.
 */

@RestController
public class HelloWorldController {

    @RequestMapping("/hello")
    public String index() {
        return "Hello World";
    }
}


/**
 * spring-web-4.3.10.RELEASE.jar
 spring-webmvc-4.3.10.RELEASE.jar
 tomcat-embed-core-8.5.16.jar

 http://localhost:8080/hello
 Hello World
 *
 */

運行DemoApplication中的main方法,啟動服務:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.6.RELEASE)

服務啟動后,啟動主程序,打開瀏覽器訪問http://localhost:8080/hello,就可以看到效果了,有木有很簡單!

如何做單元測試

打開的src/test/下的測試入口,編寫簡單的http請求來測試;使用mockmvc進行,利用MockMvcResultHandlers.print()打印出執(zhí)行結果。

package com.pingkeke.springBoot.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;

/**
 * 編寫簡單的http請求來測試;使用mockmvc進行,
 * 利用MockMvcResultHandlers.print()打印出執(zhí)行結果。.
 */

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloWorldControlerTests {

    private MockMvc mvc;

    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }

    @Test
    public void getHello() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
    }
}

Spring Boot之熱部署

spring boot使用的是spring-boot-devtools是一個為開發(fā)者服務的一個模塊。其原理用了classLoader 其中一個加載不變的類,另一個restart ClassLoader加載變得類。
devtools會監(jiān)聽classpath下的文件變動,并且會立即重啟應用(發(fā)生在保存時機)。

pom的依賴直接添加坐標

<!--用于設置熱部署-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>true</scope>
</dependency>

編譯節(jié)點添加

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--用于設置熱部署,如果不配值將不會起作用-->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

設置Idea

設置Idea01

Ctrl+Shift+Alt+ /

設置Idea02
設置Idea03

重啟項目即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容