1. 程式人生 > >SpringBoot介紹與使用

SpringBoot介紹與使用

SpringBoot介紹與使用

1.什麼是SpringBoot

SpringBoot是Spring專案中的一個子工程,與我們所熟知的Spring-framework 同屬於spring的產品:

我們可以看到下面的一段介紹:

Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.

翻譯一下:

用一些固定的方式來構建生產級別的spring應用。Spring Boot 推崇約定大於配置的方式以便於你能夠儘可能快速的啟動並執行程式。

其實人們把Spring Boot 稱為搭建程式的腳手架。其最主要作用就是幫我們快速的構建龐大的spring專案,並且儘可能的減少一切xml配置,做到開箱即用,迅速上手,讓我們關注與業務而非配置。

2.為什麼要學習SpringBoot

java一直被人詬病的一點就是臃腫、麻煩。當我們還在辛苦的搭建專案時,可能Python程式設計師已經把功能寫好了,究其原因注意是兩點:

  • 複雜的配置,

    專案各種配置其實是開發時的損耗, 因為在思考 Spring 特性配置和解決業務問題之間需要進行思維切換,所以寫配置擠佔了寫應用程式邏輯的時間。

  • 一個是混亂的依賴管理。

    專案的依賴管理也是件吃力不討好的事情。決定專案裡要用哪些庫就已經夠讓人頭痛的了,你還要知道這些庫的哪個版本和其他庫不會有衝突,這難題實在太棘手。並且,依賴管理也是一種損耗,新增依賴不是寫應用程式程式碼。一旦選錯了依賴的版本,隨之而來的不相容問題毫無疑問會是生產力殺手。

而SpringBoot讓這一切成為過去!

Spring Boot 簡化了基於Spring的應用開發,只需要“run”就能建立一個獨立的、生產級別的Spring應用。Spring Boot為Spring平臺及第三方庫提供開箱即用的設定(提供預設設定,存放預設配置的包就是啟動器),這樣我們就可以簡單的開始。多數Spring Boot應用只需要很少的Spring配置。

我們可以使用SpringBoot建立java應用,並使用java –jar 啟動它,就能得到一個生產級別的web工程。

3.SpringBoot的特點

Spring Boot 主要目標是:

  • 為所有 Spring 的開發者提供一個非常快速的、廣泛接受的入門體驗
  • 開箱即用(啟動器starter-其實就是SpringBoot提供的一個jar包),但通過自己設定引數(.properties),即可快速擺脫這種方式。
  • 提供了一些大型專案中常見的非功能性特性,如內嵌伺服器、安全、指標,健康檢測、外部化配置等
  • 絕對沒有程式碼生成,也無需 XML 配置。

更多細節,大家可以到官網檢視。

4.SpringBoot搭建web工程

接下來,我們就來利用SpringBoot搭建一個web工程,體會一下SpringBoot的魅力所在!

4.1.建立工程

我們先新建一個空的工程:

工程名為demo:

新建一個model:

使用maven來構建:

然後填寫專案座標:

目錄結構:

專案結構:

4.2.新增依賴

看到這裡很多同學會有疑惑,前面說傳統開發的問題之一就是依賴管理混亂,怎麼這裡我們還需要管理依賴呢?難道SpringBoot不幫我們管理嗎?

彆著急,現在我們的專案與SpringBoot還沒有什麼關聯。SpringBoot提供了一個名為spring-boot-starter-parent的工程,裡面已經對各種常用依賴(並非全部)的版本進行了管理,我們的專案需要以這個專案為父工程,這樣我們就不用操心依賴的版本問題了,需要什麼依賴,直接引入座標即可!

4.2.1.新增父工程座標

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

4.2.2.新增web啟動器

為了讓SpringBoot幫我們完成各種自動配置,我們必須引入SpringBoot提供的自動配置依賴,我們稱為啟動器。因為我們是web專案,這裡我們引入web啟動器:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

需要注意的是,我們並沒有在這裡指定版本資訊。因為SpringBoot的父工程已經對版本進行了管理了。

這個時候,我們會發現專案中多出了大量的依賴:

這些都是SpringBoot根據spring-boot-starter-web這個依賴自動引入的,而且所有的版本都已經管理好,不會出現衝突。

4.2.3.管理jdk版本

預設情況下,maven工程的jdk版本是1.5,而我們開發使用的是1.8,因此這裡我們需要修改jdk版本,只需要簡單的新增以下屬性即可:

    <properties>
        <java.version>1.8</java.version>
    </properties>

4.2.4.完整pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.leyou.demo</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

4.3.啟動類

Spring Boot專案通過main函式即可啟動,我們需要建立一個啟動類:

然後編寫main函式:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4.4.編寫controller

接下來,我們就可以像以前那樣開發SpringMVC的專案了!

我們編寫一個controller:

程式碼:

@RestController
public class HelloController {

    @GetMapping("hello")
    public String hello(){
        return "hello, spring boot!";
    }
}

4.5Yaml配置檔案

配置檔案除了可以使用application.properties型別,還可以使用字尾名為: .yml 或者 .yaml的型別,也就是:application.yml或者application.yaml

Yaml是一種簡潔的非標記語言。Yaml是以資料為中心,使用空白,縮排,分行組織資料,從而使得表示更加簡潔易讀。

基本格式:

#服務埠
server:
  port: 8080

如果兩個配置檔案都有,會把兩個檔案的配置合併,如果有重複屬性,以Properties中的為準

4.6.啟動測試

接下來,我們執行main函式,檢視控制檯:

並且可以看到監聽的埠資訊:

  • 1)監聽的埠是8080
  • 2)SpringMVC的對映路徑是:/
  • 3)/hello路徑已經對映到了HelloController中的hello()方法

開啟頁面訪問:http://localhost:8080/hello

測試成功了