1. 程式人生 > >Spring Boot 基礎知識學習(一)——快速入門

Spring Boot 基礎知識學習(一)——快速入門

          SpringBoot 基礎知識學習(一)——快速入門

一、背景介紹

         今天是2016年11月15號,接觸微服務大概一年多的時間,並且我們團隊已經在去年使用微服務架構搭建我們數字化企業雲平臺,同時在這塊也投入了很多時間去學習和研究,有一些經驗和學習心得,可以和大家一起分享與學習,提到微服務我們可能會想到許多熱門的知識點,比如Spring Boot、docker、k8s、restful、持續交付、分散式事務,服務拆分等等,接下來我會給大家分享Spring Boot相關的系列知識,同時歡迎大家留言共同討論,指出不足之處。

         相信大部分學習Java的人都會這樣的經歷,在你第一次接觸和學習spring框架的時候,在感嘆它的強大同時也會其繁雜的配置拍桌而起,“我”明明配置和視訊講述的一樣,為啥我的不能執行呢(然後一些人退卻啦)?即使你熟悉了Spring,也會因為一堆反覆黏貼xml配置而煩惱,然後有一批聰明人出現,Spring annotation出現極大簡化了配置,簡化了spring學習曲線,但是攔截器,監聽器,事務,資料庫連線等還是進行配置。然而,人類對於技術追求是無止境,如實就有人想到如果spring不存在xml配置多好?那麼很高興告訴你,它已經出現,它叫Spring Boot。

         什麼是Spring Boot呢?官網是這麼說的“Spring Boot makes it easy to create stand-alone, production-gradeSpring based Applications that you can “just run”. ”,大致的意思是:Spring Boot使我們更容易去建立基於Spring的獨立和產品級的可以”即時執行“的應用和服務。支援約定大於配置,目的是儘可能快地構建和執行Spring應用。Spring Boot的主要優點:

(1)    為所有Spring開發者更快的入門;

(2)    開箱即用,提供各種預設配置來簡化專案配置;

(3)    提供一系列的非功能性的功能,是常見的大型類的專案(例如:內嵌式容器、安全、健康檢查等)

(4)    沒有冗餘程式碼生成和XML配置的要求

二、快速入門例項

         本例項是快速開發一個“Hello World”Web應用程式,通過這個例子對Spring Boot有一個初步的瞭解,並體驗其結構簡單、開發快速的特性。除了傳統的使用IDEA或者Eclipse建立專案外,SpringBoot提供使用SPRINGINITIALIZR工具(https://start.spring.io)產生基礎專案(選擇Spring Boot版本以及其他選項,然後下載即可),專案範例原始碼下載地址為:

https://github.com/dreamerkr/SpringBoot, 具體如下圖所示:


(1)   專案結構簡介

        我這裡是自己手動建立專案,不過和上面Spring提供的工具建立是一樣的效果,建立好的專案結構如下所示:


主要有java、resources、test三目錄,分別是程式入口、配置檔案和測試入口,使用DemoApplication和DemoApplicationTests類均可以啟動專案,通過觀察啟動日誌發現使用很多的預設設定,具體如下圖所示:


(2)   pom.xml檔案簡介

        此檔案引入了三個模組分別是starter(核心模組,包括自動配置支援、日誌和YAML)、starter-test(測試模組,包括JUnit、Hamcrest、Mockito)、starter-web(Web模組,包括SpringMVC、Tomcat),具體程式碼如下所示:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
    </parent>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <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>

(3)   編寫HelloController類

           HelloController類的內容如下:

package com.primeton.springbootlesson1;

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

/**
 * 
 * TODO 此處填寫 class 資訊
 *
 * @author wangzhao (mailto:[email protected])
 */
@RestController
public class HelloController {

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

(4)   編寫單元測試用例

         DemoApplicationTests類程式碼如下所示:

import static org.hamcrest.Matchers.equalTo;
import staticorg.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import staticorg.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.SpringApplicationConfiguration;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MockServletContext.class)
@WebAppConfiguration
public class DemoApplicationTests {
 
    private MockMvc mockMvc;
   
    @Before
    public void setUp(){
        mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
    }
 
    @Test
    public void getHello() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }
}


(5)   啟動執行範例

         執行DemoApplication主程式,然後開啟瀏覽器訪問http://localhost:8080/hello,頁面顯示如下圖所示:


相關推薦

Spring Boot 基礎知識學習——快速入門

          SpringBoot 基礎知識學習(一)——快速入門 一、背景介紹          今天是2016年11月15號,接觸微服務大概一年多的時間,並且我們團隊已經在去年使用微服務架構

Spring Boot 基礎知識學習——配置檔案多環境配置

     SpringBoot 基礎知識學習(二)——配置檔案多環境配置           通過上一篇《Spring Boot 基礎知識學習(一)——快速入門》我們知道SpringBoot使用預設配

CSS基礎知識學習

一、HTML、CSS、JavaScript    1、 HTML是網頁內容的載體。內容就是網頁製作者放在頁面上想要讓使用者瀏覽的資訊,可以包含文字、圖片、視訊等。    2、 CSS樣式是表現。就像網頁的外衣。比如,標題字型、顏色變化,或為標題加入

Spring-boot 官方教程學習

環境配置-基於Ubantu-16 Java環境配置 新增ppa    sudo add-apt-repository ppa:webupd8team/java sudo apt-get update Java 下載器 圖形化配置 sudo apt-get ins

建立spring-boot專案,學習

一、用IDEA建立spring-boot工程 IDEA版本:2018.1.5的Ultimate版本,非Ultimate版本可能缺少一些功能。 下面開始建立spring-boot專案 1,選擇Spring-Initializer,之後next 2,填寫專案名稱,專案

php基礎知識學習

1、 PHP 指令不區分大小寫,但是PHP變數名區分大小寫 2、 Include和require都可以引用檔案,但是include引用失敗後可以繼續執行下面的程式碼,但是require不可以。 3、 FILE和DIR的區別:FILE表示檔案的完整路徑和

圖的基礎知識學習

終於決定學一下圖了,圖一直以為是一種蠻有意思的方法。 圖G=(V,E),V表示頂點數,E表示邊數,圖可以分為有向圖和無向圖,有兩種標準的方法,即鄰接表和鄰接矩陣。 鄰接表有V個列表的Adj陣列組成,

ABAP基礎知識學習

●巨集定義(macro) DEFINE~END-OF-DEFINITION 相同命令體2次以上執行的時候,可以使用巨集定義來實現。 巨集定義必須在巨集呼叫之前,巨集定義中最多可使用9個佔位符(相當於變數名),&1~&9。 巨集定義在程式執行時不能使用斷點除錯

mybatis學習 快速入門

一、Mybatis介紹      MyBatis是一個支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始對映,將介面和Java的POJO(Plain Old Ja

操作系統基礎知識總結

一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個

Java基礎知識整理

顯式 sys 轉換 強制 print pri 字符 parse ger Java開發環境JDK(Java編輯器、Java運行工具(JRE作用)、Java文檔生成工具、Java打包工具) 1.Java是嚴格區分大小寫的。2.Java程序中一句連續的字符串不能分開在兩行書寫,

老男孩python基礎知識練習題

rem python () 計算 輸出 長度 end 2個 下列表 20、字符串是否可叠代?如可以請使用for循環每一個元素? >>> name = " aleX ">>> for i in name:... print(i) 2

Spring Cloud Spring Boot mybatis分布式微服務雲架構快速入門

springboot springcloud mybatis eureka config 快速入門本章主要目標完成Spring Boot基礎項目的構建,並且實現一個簡單的Http請求處理,通過這個例子對Spring Boot有一個初步的了解,並體驗其結構簡單、開發快速的特性。 系統要求:J

Spring Boot 最佳實踐快速入門

我想 並不是 系統 exe 輸出 開發環境 模型 hot 根據 一、關於Spring Boot 在開始了解Spring Boot之前,我們需要先了解一下Spring,因為Spring Boot的誕生和Spring是息息相關的,Spring Boot是Spring發展到一定程

安卓介面基礎知識總結:LinearLayout佈局的常見屬性

之前做專案都是用到了才會查詢自己所需的,沒有系統總結一下,也沒有特意去記,面試的時候被問到了居然不知道,-_-|| 決定開始系統總結一下: 1. android:orientation:設定線性佈局是水平還是豎直排列,可能選項如下: 1)vertical,豎直 2)horizontal,水

網路相關基礎知識總結吞吐量測試&吞吐量與頻寬區別

一.概念 網路中的資料是由一個個資料包組成,防火牆對每個資料包的處理要耗費資源。吞吐量是指在沒有幀丟失的情況下,裝置能夠接受的最大速率。 1.作用地位 網路吞吐量測試是網路維護和故障查詢中最重要的手段之一,尤其是在分析與網路效能相關的問題時吞吐量的測試是必備的測試手段。 作為驗證和測試網

python基礎知識總結

字母 內容 查看 二進制 代碼 大寫字母 del 源碼 解決 一。python版本區別 宏觀上python2與python3的區別: python2:源碼不標準,混亂,重復的代碼太多,默認編碼方式是ascill碼。 python3:

初始Spring Boot框架筆記整理

“約定大於配置” 特點 編輯 1. 建立獨立的Spring應用程式 2. 嵌入的Tomcat,無需部署WAR檔案 3. 簡化Maven配置 4. 自動配置Spring 5. 提供生產就緒型功能,如指標,健康檢查和外部配置

spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現

SpringBootMonitor spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(一) spring-boot-admin原始碼分析及單機監控spring-boot-monitor的實現(二) spring-boot-ad