暑期自學 Day 21 | Spring Boot(一)

Borris發表於2020-07-21

Spring 框架優缺點

  • 優點:

    • 通過IoC控制反轉,將建立物件交給spring的IoC容器,降低了程式間的耦合
    • 由於AOP,使spring能夠面向切面程式設計,減少了重複程式碼
    • 宣告式事務支援
    • 整合支援了主流框架 (Hibernate,Struts2,JPA)
    • 方便的測試程式碼編寫
    • DI機制降低了業務物件替換的複雜性(更改物件名,方法名,資料庫配置等等)
    • 對很多Java EE API進行了封裝,降低了它們的使用難度(JDBC, JavaMail…)
  • 缺點

    • 元件程式碼輕量級,配置重量級。配置過於繁瑣。
    • 搭建環境時專案的依賴關係分析交複雜。

Spring Boot

  • 解決 Spring 框架的缺點
  • 沒有程式碼生成,無需XML配置。快速配置。
  • 提供了一些大型專案中非功能性特性。(嵌入式伺服器,)
  • 核心功能:
    • 起步依賴
      • Maven 專案物件模型(POM),定義了對其他庫的傳遞依賴
    • 自動配置
      • 應用程式啟動時配置的過程,自動完成

熱部署

pom.xmlspring-boot-devtools座標,使修改程式碼時無需重啟專案即可生效。

入門部署程式碼

  • 在pom.xml中繼承SpringBoot的起步依賴spring-boot-starter-parent
  • 新增spring-boot-starter-web依賴進行web開發
  • 編寫SpringBoot引導類,是為了啟動 spring boot 專案,此引導類將掃描其同級包及其子包中的所有程式。
  • 編寫controller,使用@Controller, @RequestMapping, @ResponseBody 註解
  • 進行測試

程式碼示例

起步依賴

  • 所有 spring boot 專案必須繼承 spring-boot-starter-parent,因為裡面已經配置好了 spring 所需的各種依賴。
  • 同樣,匯入的依賴 spring-boot-starter-web 和 spring-boot-starter-test 也有同樣的依賴打包。

自動配置

  • @SpringBootApplication 包含了很多其他註解。
    • 如@SpringBootConfiguration,意味開啟了Spring Boot功能
    • @EnableAutoConfiguration,開啟了自動配置
    • @ComponentScan,掃描需要的類,包括和 Spring Boot 開啟類同級的包以及其子包所有的類。

Spring Boot 整合其他技術

Mybatis

  • 新增 Mybatis 的起步依賴和 Mysql 的依賴
  • 在application.properties中配置資料庫連線資訊
    • 注意新版本mysql依賴中需要我們在資訊中明確時區
  • 建立資料表(案例中是user表)
  • 建立user表的實體Bean(包含各個引數的setter和getter)
  • 編寫Mapper介面,其中是相關的資料庫操作成員方法。
  • 配置UserMapper.xml,實現資料庫操作語句
  • 在application.properties配置mybatis資訊(要掃描的包,對映檔案)
  • 在controller中測試mybatis的使用

程式碼示例

Junit

  • 問題:spring boot 已經在 pom.xml 中為我們新增了測試相關的依賴 spring-boot-starter-test,由於預設使用 junit5,而 spring boot 2.x.x 只支援 junit4,所以在測試類中使用 @RunWith 註解會報錯。

  • 解決:我們需要將其中的exclusions刪除,因為所排出的junit-vintage-engine中包含了junit4的依賴,這正是我們需要的。

  • 解決此問題後,我們在測試類前使用@RunWith(SpringRunner.class)以及@SpringBootTest(SpringApplication.class)註解匯入引導類。

  • 使用@AutoWired註解自動注入所需測試的物件。

  • 在測試方法前加@Test註解

程式碼示例

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章