天天看點

Spring Boot 快速入門教程(附詳細圖文)

Spring Boot 快速入門教程(附詳細圖文)

什麼是 Spring Boot?

Spring Boot 是由 Pivotal 團隊提供的全新架構。Spring Boot 是所有基于 Spring Framework 5.0 開發的項目的起點。Spring Boot 的設計是為了讓你盡可能快的跑起來 Spring 應用程式并且盡可能減少你的配置檔案。

設計目的:用來簡化新 Spring 應用的初始搭建以及開發過程。

從最根本上來講,Spring Boot 就是一些庫的集合,它能夠被任意項目的建構系統所使用。它使用 “習慣優于配置” (項目中存在大量的配置,此外還内置一個習慣性的配置)的理念讓你的項目快速運作起來。用大佬的話來了解,就是 spring boot 其實不是什麼新的架構,它預設配置了很多架構的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的架構,總結一下及幾點:

(1)為所有 Spring 開發提供一個更快更廣泛的入門體驗。

(2)零配置。無備援代碼生成和XML 強制配置,遵循“約定大于配置” 。

(3)內建了大量常用的第三方庫的配置, Spring Boot 應用為這些第三方庫提供了幾乎可以零配置的開箱即用的能力。

(4)提供一系列大型項目常用的非功能性特征,如嵌入式伺服器、安全性、度量、運作狀況檢查、外部化配置等。

(5)Spring Boot 不是Spring 的替代者,Spring 架構是通過 IOC 機制來管理 Bean 的。Spring Boot 依賴 Spring 架構來管理對象的依賴。Spring Boot 并不是Spring 的精簡版本,而是為使用 Spring 做好各種産品級準備。

公衆号(Java後端 )還釋出過近百篇 Spring  Boot 相關的文章,關注後背景回複「666」擷取。

Spring Boot 在應用中的角色

  • Spring Boot 是基于 Spring Framework 來建構的,Spring Framework 是一種 J2EE 的架構(什麼是 J2EE?)
  • Spring Boot 是一種快速建構 Spring 應用
  • Spring Cloud 是建構 Spring Boot 分布式環境,也就是常說的雲應
  • Spring Boot 中流砥柱,承上啟下
Spring Boot 快速入門教程(附詳細圖文)

環境準備

    (1)JDK 環境必須是 1.8 及以上,傳送門:jdk1.8.191 下載下傳    (2)後面要使用到 Maven 管理工具 3.2.5 及以上版本,是以會先介紹 Maven 的安裝與配置    (3)開發工具建議使用 IDEA,也可以 MyEclips

Maven 安裝與環境變量配置

(1)Maven 安裝:

    在官網下載下傳:http://maven.apache.org/download.cgi

Spring Boot 快速入門教程(附詳細圖文)

(2)Maven 配置環境變量:

解壓到一個路徑,然後配置環境變量:

  • 建立變量名:MAVEN_HOME 變量值:D:\server\apache-maven-3.6.0(這是我的 MAVEN 路徑)
  • 編輯變量名:Path 在最前面加上:%MAVEN_HOME%\bin

(3)檢查是否配置成功:

在指令行輸入:

mvn -V      

然後會一大堆東西:

Spring Boot 快速入門教程(附詳細圖文)

(4)配置 maven 倉庫:

1.打開 maven 檔案夾下的 config 檔案夾下的 settings.xml;

2.找到 localRepository 标簽,此時是被注釋掉的,我們解除注釋,然後配置一個路徑,例如:D:/space/MavenRepository/maven_jar,這樣以後 MAVEN 管理下載下傳的jar 包都會在這個路徑下。

【注意】:注意結點的位置,先找到注釋掉的部分,貼在下面

D:\space\MavenRepository\maven_jar      
Spring Boot 快速入門教程(附詳細圖文)

3.配置遠端倉庫,找到 mirrors 标簽

<!--遠端倉庫-->
<mirror>
  <id>aliyun</id>
  <name>aliyun Maven</name>
  <mirrorOf>*</mirrorOf>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>           
Spring Boot 快速入門教程(附詳細圖文)

4.當然我們需要先建這樣一個目錄結構,然後還要把settings.xml 複制一份到 D:/space/MavenRepository 下

Spring Boot 快速入門教程(附詳細圖文)

(5)在 idea 配置 maven:

點選【File】>【Settings】>搜尋【Maven】,按截圖配置安裝目錄和選擇剛剛 settings 配置檔案;

Spring Boot 快速入門教程(附詳細圖文)

選擇完settings之後,本地倉庫自動改成settings檔案中配置的;點選apply,再點選ok即配置完成。

使用 idea 快速搭建 Spring Boot

第一步:建立 Spring Initializr 項目:

Spring Boot 快速入門教程(附詳細圖文)

(1)選擇 Spring Initializr

(2)選擇 SDK,點選【new】這裡就是使用 JAVA SDK 要求版本 1.8+,選擇你預設安裝在 C:\Program Files\Java\jdk1.8.0_191 目錄:

Spring Boot 快速入門教程(附詳細圖文)

(3)然後選擇預設的 url (不用管)點選【Next】:

Spring Boot 快速入門教程(附詳細圖文)

(4)然後填寫一下項目的資訊:

Spring Boot 快速入門教程(附詳細圖文)

(5)先勾選上 Web 依賴:

Spring Boot 快速入門教程(附詳細圖文)

(6)勾選 SQl 下的 MySQL,MyBatis 依賴:

(根據自己的項目選擇,後面可加)

Spring Boot 快速入門教程(附詳細圖文)

(7)選擇好項目的位置,點選【Finish】:

Spring Boot 快速入門教程(附詳細圖文)

(8)如果是第一次配置 Spring Boot 的話可能需要等待一會兒 IDEA 下載下傳相應的 依賴包,預設建立好的項目結構如下:

Spring Boot 快速入門教程(附詳細圖文)

項目結構還是看上去挺清爽的,少了很多配置檔案,我們來了解一下預設生成的有什麼:

  • SpringbootApplication:一個帶有 main() 方法的類,用于啟動應用程式
  • SpringbootApplicationTests:一個空的 Junit 測試了,它加載了一個使用 Spring Boot 字典配置功能的 Spring 應用程式上下文
  • application.properties:一個空的 properties 檔案,可以根據需要添加配置屬性
  • pom.xml:Maven 建構說明檔案

第二步:HelloController

在 【main/java/com.xpwi.springboot】包下建立一個【HelloController】:

Spring Boot 快速入門教程(附詳細圖文)
package com.xpwi.springboot;

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

/**
 * 測試控制器
 *
 * @author: @肖朋偉CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}           

第三步:利用 IDEA 啟動 Spring Boot

(1)我們回到 SpringbootApplication 這個類中,然後右鍵點選運作:

Spring Boot 快速入門教程(附詳細圖文)

(2)會提示 Maven 導包,點選 import

Spring Boot 快速入門教程(附詳細圖文)

(3)注意:我們之是以在上面的項目中沒有手動的去配置 Tomcat 伺服器,是因為 Spring Boot 内置了 Tomcat

等待一會兒就會看到下方的成功運作的提示資訊:

Spring Boot 快速入門教程(附詳細圖文)

(4)此時,可以看到我們的 Tomcat 運作在 8080 端口,我們來通路下面位址試一下:

http://localhost:8080/hello      
Spring Boot 快速入門教程(附詳細圖文)

Spring Boot 項目檔案介紹

一、解析 pom.xml 檔案:

(1)讓我們來看看預設生成的 pom.xml 檔案中到底有些什麼:

<?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.xpwi</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>           

(2)我們可以看到一個比較陌生一些的标簽 ,這個标簽是在配置 Spring Boot 的父級依賴:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>           

有了這個,目前的項目才是 Spring Boot 項目,spring-boot-starter-parent 是一個特殊的 starter ,它用來提供相關的 Maven 預設依賴,使用它之後,常用的包依賴就可以省去 version 标簽。

關于具體 Spring Boot 提供了哪些 jar 包的依賴,我們可以檢視本地 Maven 倉庫下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom 檔案來檢視,挺長的…

二、應用入口類 SpringbootApplication.java

Spring Boot 項目通常有一個名為 *Application 的入口類,入口類裡有一個 main 方法, 這個 main 方法其實就是一個标準的 Javay 應用的入口方法。

@SpringBootApplication 是 Spring Boot 的核心注解,它是一個組合注解,該注解組合了:@Configuration、@EnableAutoConfiguration、@ComponentScan;若不是用 @SpringBootApplication 注解也可以使用這三個注解代替。

其中,@EnableAutoConfiguration 讓 Spring Boot 根據類路徑中的 jar 包依賴為目前項目進行自動配置,例如,添加了 spring-boot-starter-web 依賴,會自動添加 Tomcat 和 Spring MVC 的依賴,那麼 Spring Boot 會對 Tomcat 和 Spring MVC 進行自動配置。

Spring Boot 還會自動掃描 @SpringBootApplication 所在類的同級包以及下級包裡的 Bean ,是以入口類建議就配置在 grounpID + arctifactID 組合的包名下(這裡為 com.xpwi.springboot 包)

三、Spring Boot 的配置檔案:

Spring Boot 使用一個全局的配置檔案 application.properties 或 application.yml,放置在【src/main/resources】目錄或者類路徑的 /config 下。

Spring Boot 不僅支援正常的 properties 配置檔案,還支援 yaml 語言的配置檔案。yaml 是以資料為中心的語言,在配置資料的時候具有面向對象的特征。

Spring Boot 的全局配置檔案的作用是對一些預設配置的配置值進行修改。

修改 properties 配置檔案執行個體:

(1)打開 resources 下的 application.properties

Spring Boot 快速入門教程(附詳細圖文)

(2)在這裡我們可以設定通路的端口,将 Tomcat 預設端口設定為 8080 (預設的不修改) ,并将預設的通路路徑從 “/” 修改為 “/cn” 時,再通路 http://localhost:8080/ 是什麼都沒有的,此時要通路 hello 是要使用 http://localhost:8080/cn/hello

Spring Boot 快速入門教程(附詳細圖文)

注意:如果是 yml 需要在 “:” 後加一個空格,幸好 IDEA 很好地支援了 yml 檔案的格式有良好的代碼提示;

我們可以自己配置多個屬性

(3)使用 yml 檔案作為配置檔案,我們直接把 .properties 字尾的檔案删掉,使用 .yml 檔案來進行簡單的配置

Spring Boot 快速入門教程(附詳細圖文)

(4)在然後使用在我們的 HelloController.java 類中使用 @Value 來擷取配置屬性,代碼(請看注釋):

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 測試控制器
 *
 * @author: @肖朋偉CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    // 擷取.yml 檔案中值
    @Value("${name}")
    private String name;

    // 擷取 age
    @Value("${csdnUrl}")
    private String csdnUrl;

    //路徑映射,對應浏覽器通路的位址,通路該路徑則執行下面函數
    @RequestMapping("/hello")
    public String hello() {
        return name + " CSDN 部落格:"+ csdnUrl;
    }
}           

(5)重新開機 Spring Boot ,輸入位址:http://localhost:8080/hello 能看到正确的結果:

Spring Boot 快速入門教程(附詳細圖文)

【注意】:此時如果你第一次使用 idea 出現中文亂碼,解決辦法:

Spring Boot 快速入門教程(附詳細圖文)

(6)【注意】:我們并沒有在 yml 檔案中注明屬性的類型,而是在使用的時候定義的。你也可以在配置檔案中使用目前配置:

Spring Boot 快速入門教程(附詳細圖文)

(7)任然可以得到正确結果.

(8)【問題】:這樣寫配置檔案繁瑣而且可能會造成類的臃腫,因為有許許多多的 @Value 注解。

可以,封裝配置資訊

封裝配置資訊使用方法:

(1)application.yml 檔案内容如下:

Spring Boot 快速入門教程(附詳細圖文)

(2)建立 author.java 和 HelloController.java 同級,内容如下:

package com.xpwi.springboot;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "author")
public class author {
    private  String name;

    private  String csdnUrl;

    public String getCsdnUrl() {
        return csdnUrl;
    }

    public void setCsdnUrl(String csdnUrl) {
        this.csdnUrl = csdnUrl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}           

(3)此時可能會報錯,如果報錯,打開 pom.xml 檔案,添加内容(注意位置):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>           
Spring Boot 快速入門教程(附詳細圖文)

(4)重新編寫 HelloController 類,内容如下:

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

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

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

/**

 * 測試控制器

 *

 * @author: @肖朋偉CSDN

 * @create: 2018-11-18

 */

@RestController

public class HelloController {

    // 擷取.yml 檔案中值

    //@Value("${name}")

    //private String name;

    // 擷取 age

    //@Value("${csdnUrl}")

    //private String csdnUrl;

    @Autowired

    private author author;

    //路徑映射,對應浏覽器通路的位址,通路該路徑則執行下面函數

    @RequestMapping("/hello")

    public String hello() {

        return "名字:" + author.getName() + " 位址:" + author.getCsdnUrl();

    }

}

(5)重新開機 Spring Boot,通路浏覽器:

http://localhost:8080/hello      

【提示】:我們可以把配置資訊封裝成一個類,首先在我們的 name 和 age 前加一個 student 字首,然後建立一個 StudentProperties 的類用來封裝這些資訊,并用上兩個注解:

  • @Component:表明目前類是一個 Java Bean
  • @ConfigurationProperties(prefix = “author”):表示擷取字首為 author 的配置資訊