SpringBoot:1.開啓SpringBoot之旅

什麼是 Spring Boot

在這裏插入圖片描述
Spring Boot是Spring團隊設計用來簡化Spring應用的搭建和開發過程的框架。該框架對第三方庫進行了簡單的默認配置,經過Spring Boot構建的應用程序只需不多的Spring配置便可快速的運行起來。java

使用 Spring Boot 好處

簡單、快速、便捷。git

搭建普通Spring Web項目項目的通常流程:github

  1. 配置web.xml,整合Spring和SpringMvc
  2. 整合Spring和Mybatis,配置Spring事務
  3. 配置日誌文件
  4. 部署Tomcat調試

.......web

一系列的配置過程繁雜,很容易遺漏掉,即使是隨便搭建一個簡單的爬取某個頁面的郵箱存入數據庫的小項目,都要從頭至尾的將配置流程走一遍。spring

若是使用Spring Boot,配置則簡化了不少,只須要引入響應的幾個maven依賴,進行簡單的幾個配置就能夠快速方便的搭建一個Web項目。數據庫

開啓Spring Boot之旅

線上構建

  1. 訪問http://start.spring.io
  2. 選擇Maven Project、Java、Spring Boot 2.1.9構建,點擊Generate生成對應的文件。項目信息簡單配置。

在這裏插入圖片描述
備註:json

Dependencies處可經過添加相應的依賴,在生成項目文件時就會自動添加,好比,若是咱們要作Web開發,只要在依賴裏添加Web便可。瀏覽器

  1. MyEclipse,Import -> Existing Maven Projects -> Next -> 選擇解壓後的文件夾 -> Finsh!

在這裏插入圖片描述

經過Myeclipse構建項目

  1. File -> New -> Spring Starter Project新建項目
  2. 配置項目相關基本信息

在這裏插入圖片描述

  1. 選擇依賴,好比Spring Web

在這裏插入圖片描述

  1. Finish OK,Spring Boot項目構建完成。

Tips:tomcat

導入或者Myeclipse構建項目有可能會出現pom.xml文件首行出現錯誤:Unknown pom.xml /demo line 1 Maven Configuration Problem。微信

解決方案

在pom文件中的<properties>節點中加入<maven-jar-plugin.version>3.0.0</maven-jar-plugin.version>而後右鍵項目進入Maven>Update Project...菜單點擊,便可

項目結構解析

在這裏插入圖片描述
Spring Boot 的基礎結構共三個文件:

  • src/main/java 程序開發以及主程序入口:Application
  • src/main/resources 配置文件存放位置:application.properties
  • src/test/java 測試入口:ApplicationTests
  1. 在Application 右鍵run啓動Spring Boot項目

生成的ApplicationApplicationTests類均可以直接運行來啓動當前建立的項目,因爲目前該項目未配合任何數據訪問或Web模塊,程序會在加載完Spring以後結束運行。

Web開發

默認Tomcat啓動項目

spring-boot-starter-parent指定了當前項目爲一個Spring Boot項目,它提供了諸多的默認Maven依賴。

Spring Boot提供了許多開箱即用的依賴模塊,這些模塊都是以spring-boot-starter-XX命名的。好比要開啓Spring Boot的web功能,只須要在pom.xml中配置spring-boot-starter-web便可:

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

由於其依賴於spring-boot-starter-parent,因此這裏能夠不用配置version。

pom.xml 文件中默認有兩個模塊:

  • spring-boot-starter :核心模塊,包括自動配置支持、日誌和 YAML,若是引入了 spring-boot-starter-web web 模塊能夠去掉此配置,由於 spring-boot-starter-web 自動依賴了 spring-boot-starter
  • spring-boot-starter-test :測試模塊,包括 JUnit、Hamcrest、Mockito。
  1. 編寫Controller層
package com.w3cjava.controller;

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

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

@RestController 至關於Spring中的@Controller和@ResponseBody組合使用的,直接以 json 格式輸出。

  1. 啓動主程序,打開瀏覽器訪問http://localhost:8080/hello 結果界面以下,你已經能夠愉快的開發Web項目了。

在這裏插入圖片描述

配置Jetty啓動項目

  1. 在pom.xml文件中找到spring-boot-starter-web,在其依賴中排除tomcat依賴
<!-- 支持web的模塊依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 排除tomcat依賴 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  1. 添加jetty依賴
<!-- jetty依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
  1. 啓動項目主程序,可見tomcat已經替換爲jetty了。

在這裏插入圖片描述

  1. 訪問 http://localhost:8080/hello 頁面結果顯示正常。

單元測試

模擬對 http://localhost:8080/hello 發送請求測試

package com.w3cjava;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

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 com.w3cjava.controller.HelloWorldController;

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

    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(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }
}

熱部署

  1. 添加spring-boot-devtools依賴
<!-- 熱部署依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
  1. 啓動主程序
  2. 在HelloWorldController中添加新的映射方法
@RequestMapping("/hello1")
public String index1() {
    return "Hello World1";
}
  1. 直接訪問 http://localhost:8080/hello1 正常

在這裏插入圖片描述

spring-boot-maven-plugin插件

spring-boot-maven-plugin:可以以Maven的方式爲應用提供Spring Boot的支持,即爲Spring Boot應用提供了執行Maven操做的可能。

Spring Boot Maven plugin的5個Goals

  • spring-boot:repackage,默認goal。在mvn package以後,再次打包可執行的jar/war,同時保留mvn package生成的jar/war爲.origin
  • spring-boot:run,運行Spring Boot應用
  • spring-boot:start,在mvn integration-test階段,進行Spring Boot應用生命週期的管理
  • spring-boot:stop,在mvn integration-test階段,進行Spring Boot應用生命週期的管理
  • spring-boot:build-info,生成Actuator使用的構建信息文件build-info.properties

小結

整體上而言,經過Spring Boot能夠快速構建項目,若是須要使用某個特定的功能,只要添加對應的依賴及簡單配置項便可。

源碼:01.Spring-Boot-Demo

歡迎掃面下列二維碼關注「餘弦的自留地」公衆微信號
在這裏插入圖片描述萬物之中,但願至美

相關文章
相關標籤/搜索