SpringBoot-01-快速入門

SpringBoot

1. 快速入門

什麼是Spring

  • 輕量級的Java開源開發框架
  • 為了解決企業級應用開發的複雜性而創建的,簡化開發

Spring是如何簡化Java開發的

​ 為了降低Java開發的複雜性,Spring採用4種關鍵策略:

  1. 基於POJO的輕量級和最小侵入性編程;
  2. 通過IOC,依賴注入(DI)和面向介面實現松耦合;
  3. 基於切面(AOP)和慣例進行聲明式編程;
  4. 通過切面和模板減少樣式程式碼;

什麼是SpringBoot

​ SpringBoot就是一個JavaWeb的開發框架,和SpringMVC類似,對比其他框架的好處是簡化開發約定大於配置,能迅速的開發web應用,幾行程式碼就可以開發一個http介面。

​ 所有的技術框架的發展都遵循一條主線:一個複雜應用場景->一種規範框架(只需配置)->重構輕量級框架->開始提倡”約定大於配置”,衍生出一些一站式的解決方案。

​ 這就是:Java企業級應用->J2EE->spring->springBoot的過程。

​ 隨著Spring不斷發展,項目整合開發需要配置各種文件,逐漸向「配置地獄」演變。SpringBoot就是在這個背景下被抽象出來的開發框架,目的就是為了更容易的使用Spring、更容易的集成各種常用的中間件、開源軟體。

​ SpringBoot基於Spring開發,本身不提供擴展功能,只是用於快速開發新一代基於Spring框架的應用程式。開箱即用!

SpringBoot的主要優點:

  • 為所有Spring開發者更快的入門
  • 開箱即用,提供各種默認配置來簡化項目配置
  • 內嵌式容器簡化Web項目
  • 沒有冗餘程式碼生成和XML配置的要求

1.1 微服務

什麼是微服務?

​ 微服務是一種架構風格,它要求我們在開發一個應用的時候,這個應用構建成一系列小服務的組合;可以通過http的方式互通。過去是 單體應用架構。

單體應用架構

​ 單體應用架構(all in one)是指,所有應用服務都封裝在一個應用中。

​ 無論是ERP、CRM,你都把資料庫訪問,web訪問等功能放在一個war包內。

  • 這樣的好處是,易於開發和測試;需要擴展時,只需要將war複製多份,放到多個伺服器上,再做個負載均衡就可以了。
  • 缺點是,哪怕修改一個小地方,都需要停掉整個服務,重新打包、部署war包。

微服務架構

​ 所謂微服務架構,就是把每個功能元素獨立出來。把獨立出來的功能元素動態組合,即對功能元素進行複製,而沒有對整個應用進行複製。

​ 好處有:

  1. 節約了調用資源
  2. 每個功能元素的服務都是一個可替換的、可獨立升級的軟體程式碼

在這裡插入圖片描述

如何構建微服務

​ spring為我們帶來了構建大型分散式微服務的全套、全程產品:

  • 構建一個個功能獨立的微服務應用單元,可以使用SpringBoot,可以幫我們快速構建一個應用;
  • 大型分散式網路服務的調用,這部分由springcloud來完成,實現分散式;
  • 在分散式中間,進行流式數據計算、批處理,我們用spring cloud data flow
  • spring為我們想清楚了整個從開始構建應用到大型分散式應用全流程方案;

1.2 HelloWorld

準備工作:

環境準備:

  • jdk1.8
  • maven-3.6.1
  • springboot 最新版(2.3.2)
  • IDEA

創建基礎項目

官方提供了一個快速生成的網站:Spring Initializr!(IDEA集成了這個網站)

  • 可以在官網直接下載後,導入idea開發(官網在哪)
  • 直接使用idea創建一個springboot項目(開發常用方式)

【目標一:使用Spring Initializr頁面創建項目】

步驟:

  1. 打開Spring Initializr

  2. 填寫項目資訊

    在這裡插入圖片描述

  3. 點擊「Generate Project」生成項目,下載此項目

  4. 解壓項目包,並以Maven項目導入IDEA

  5. 第一次打開,速度會比較慢,需要下載的依賴很多

項目結構分析

​ 通過上面步驟完成了基礎項目的創建,就會自動生成以下文件:

  • 程式的主程式類
  • 一個application.properties配置文件
  • 一個測試類

pom.xml分析

​ 打開pom.xml,查看Spring Boot項目的依賴,主要有四個部分:

  • 項目元數據資訊:包括groupId、artifactId、name、description;
  • parent:繼承spring-boot-starter-parent的依賴管理,控制版本和打包等內容;
  • dependencies:項目依賴,包含以下內容
    • spring-boot-starter-web:實現HTTP介面(包含SPringMVC),官網對它的描述:使用SpringMVC構建Web應用程式的入門者,使用Tomcat作為默認嵌入式容器
    • spring-boot-starter-test:用於編寫單元測試的依賴包
  • build:構建配置部分。默認使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把SpringBoot應用打包成JAR來直接運行。

編寫HTTP介面

  1. 在主程式的同級目錄下,新建一個controller包

    在這裡插入圖片描述

  2. 在包中新建一個Controller類

    	//核心:自動裝配 原理!!!
    @RestController
    public class HelloController {
    
        //介面://localhost:8080/hello
        @RequestMapping("/hello")
        public String hello() {
            //調用業務,接收前端的參數
            return "hello,world";
        }
    }
    
  3. 編寫完畢後,在主程式中啟動項目,瀏覽器發起請求,看介面返回;

    • 控制台輸出了SpringBoot的banner
    • 控制條輸出了Tomcat訪問的埠號
    • 訪問hello請求,字元串成功返回!
  4. 配置pom.xml,將項目打成jar包

    <distributionManagement>
        <repository>
            <id>proficio-repository</id>
            <name>Proficio Repository</name>
            <url>file://${basedir}/target/deploy</url>
        </repository>
    </distributionManagement>
    

    在這裡插入圖片描述

  5. 打成jar包後,就可以在任何地方運行了!

小結

​ 簡單幾步,就完成了一個web介面的開發,SpringBoot就是這麼簡單,所以我們常用它來建立微服務項目!

彩蛋

自定義啟動banner圖案(賊酷)

在resources下新建banner.txt即可,效果如下:

在這裡插入圖片描述