Springboot快速入門篇,圖文並茂

Ziph發表於2020-08-09

Springboot快速入門篇,圖文並茂

文章已託管到GitHub,大家可以去GitHub檢視閱讀,歡迎老闆們前來Star!
搜尋關注微信公眾號 【碼出Offer】 領取各種學習資料!


image-20200809125922162
image-20200809125922162

一、Springboot概述

1.1 Springboot簡介

SpringBoot是由Pivotal團隊研發的,SpringBoot並不是一門新技術,只是將之前常用的Spring,SpringMVC,data-jpa等常用的框架封裝到了一起,幫助你隱藏這些框架的整合細節,實現敏捷開發。簡單來說,SpringBoot就是一個啟動器。

1.2 Springboot的特點

  • SpringBoot專案不需要模板化的配置。
  • SpringBoot中整合第三方框架時,只需要匯入相應的starter依賴包,就自動整合了。
  • SpringBoot預設只有一個.properties的配置檔案,不推薦使用xml,後期會採用.java的檔案去編寫配置資訊。
  • SpringBoot工程在部署時,採用的是jar包的方式,內部自動依賴Tomcat容器,並且提供了多環境的配置。
  • 後期要學習的微服務框架SpringCloud需要建立在SpringBoot的基礎上。

二、快速構建Springboot

2.1 Spring官方快速構建

New Project
image-20200806123015729
image-20200806123015729
Spring Initializer Project Setting
image-20200806132012542
image-20200806132012542
選擇版本和所需依賴
image-20200806132155855
image-20200806132155855
填寫專案名稱和本地儲存路徑
image-20200806132305740
image-20200806132305740

2.2 aliyun快速構建(解決載入失敗)

如果Spring官方的快速構建載入出現問題,可以使用aliyun提供的Spingboot快速構建。

aliyun快速構建Springboot
image-20200806133208551
image-20200806133208551
其他步驟與Spring官方構建一致

2.3 Spring與aliyun差別

使用Spring官方和aliyun快速構建的Springboot專案是有一些差距的,其實專案結構上沒有本質的差距,只是在pom.xml檔案中會出現一系列差距!

  • aliyun使用並維護著Spring全家桶的2.3版本,其中加入了一些編碼字符集處理與之aliyun所維護的依賴等
  • Spring官方使用並維護著Spring全家桶的2.3.2版本,其中維護使用著Spring官方依賴等

注意: 兩者沒有本質差別,我們只需要使用即可!

2.4 匯入核心依賴

此核心依賴有著Spring的大多數web依賴

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

2.5 編寫Controller直接測試

直接訪問路徑即可出現頁面並響應在瀏覽器上!

@RestController
public class TestController {
    @GetMapping("/test")
    public String test(){
        return "Hello SpringBoot!";
    }
}

三、Springboot目錄結構說明

Springboot目錄結構
image-20200809132750413
image-20200809132750413

四、Springboot的三種啟動方式

4.1 執行啟動類的main方法

執行啟動類的main方法
image-20200809133203728
image-20200809133203728

4.2 使用Maven啟動

使用Maven啟動(mvn spring-boot:run)
image-20200809133408621
image-20200809133408621

4.3 使用Springboot打包的jar檔案啟動

首先,Springboot打包方式是jar的方法。預設使用maven 的package打包,而隨之也會觸發springboot內建的springboot:repackage,而springboot的內建再次打包會在此jar檔案的基礎上內建一個tomact,也即是說使用Springboot打包的jar檔案是可以執行的!

打包展示
image-20200809133839975
image-20200809133839975
DOS命令列執行
java -jar jar檔案路徑/jar包名字

五、Springboot入門註解

5.1 @Configuration和@Bean

  • 之前使用SSM去開發時,在xml檔案中編寫bean標籤,但是SpringBoot不推薦使用xml檔案。
  • @Configuration註解相當於beans標籤
  • @Bean註解相當於bean標籤
  • id=“方法名 | 註解中的name屬性(優先順序更高)”
  • class=“方法的返回結果”

如下,舉例子。

@Configuration   // 代表當前類是一個配置類
public class UserConfig {
    @Bean(name = "user1")       // 構建一個例項,放到spring容器中
    public User user(){
        User user = new User();
        user.setId(1);
        user.setName("張三");
        return user;
    }
    /* 與其相同作用
    <beans ....>            @Configuration
        <bean id="user1" class="com.ziphtracks.firstspringboot.bean.User" />
    </beans>
     */

}

5.2 @SpringBootApplication

@SpringBootApplication就是一個組合註解:

  • @SpringBootConfiguration就是@Configuration註解,代表啟動類就是一個配置類。
  • @EnableAutoConfiguration幫你實現自動裝配的,SpringBoot工程啟動時,執行一個SpringFactoriesLoader的類,載入META-INF/spring.factories配置類(已經開啟的),通過SpringFactoriesLoader中的load方法,以for迴圈的方式,一個一個載入。
  • 好處:無需編寫大量的整合配置資訊,只需要按照SpringBoot提供好了約定去整合即可。
  • 壞處:如果說你匯入了一個starter依賴,那麼你就需要填寫他必要的配置資訊。
  • 手動關閉自動裝配指定內容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
  • @ComponentScan就相當於,幫助掃描註解的。

注意: 你完全可以通過上述所說去翻看以下該註解的原始碼

原始碼
image-20200809135539749
image-20200809135539749

5.3 @SpringBootTest

該註解用於測試啟動項中,用於啟動測試的註解

測試啟動項註解配置
image-20200809141258160
image-20200809141258160

六、Springboot配置檔案

6.1 配置檔案規範

SpringBoot的配置檔案支援properties和yml,甚至他還支援json。

更推薦使用yml檔案格式:

  1. yml檔案,會根據換行和縮排幫助我們們管理配置檔案所在位置

  2. yml檔案,相比properties更輕量級一些

yml檔案的注意事項:

  1. 嚴格遵循換行和縮排

  2. 在填寫value時,一定要在: 後面跟上空格

6.2 多環境配置

在application.yml檔案中新增一個配置項:

可以使用逗號( , )來啟用多個環境

如下我建立了兩個開發配置,一個用來開發的配置(dev)、另一個用來測試的配置(test),隨後使用總的配置來啟用這兩個配置環境。

多環境配置
image-20200809142928925
image-20200809142928925

6.3 引入外部配置檔案資訊

和傳統的SSM方式一樣,通過@Value的註解去獲取properties/yml檔案中的內容。

如果在yml檔案中需要編寫大量的自定義配置,並且具有統一的字首時,採用如下方式

// Java程式
@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {

   private String name;
   private Integer age;
}

// 配置檔案
aliyun:
  name: Ziph
  age: 18

6.3 重新構建工程

build
image-20200809143338884
image-20200809143338884

6.4 Springboot熱部署

在做SSM專案時,我們會用到IDEA外掛JRebel熱部署神器來方便開發。因為熱部署很受大家愛戴,所以Springboot也提供了熱部署功能。如下:

匯入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
IDEASetting相關配置
image-20200809171517524
image-20200809171517524
Springboot啟動項設定
image-20200809171648412
image-20200809171648412

七、Springboot建立web目錄

static資料夾是儲存靜態資源的,而我們的動態資源還是需要web目錄結構儲存的,於是我們建立一個web目錄結構!

匯入JSP以及JSTL核心依賴

<!--JSP核心引擎依賴-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--JSTL-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
建立webapp以及WEB-INF等web目錄結構
image-20200809172236167
image-20200809172236167
新增web.xml
image-20200809172408724
image-20200809172408724
image-20200809172554940
image-20200809172554940
展示web目錄結構
image-20200809172758250
image-20200809172758250

相關文章