springboot封裝自定義starter

目錄

  1. 正常流程
  2. @Conditionalxxx作用

簡介

由上篇文章<<springboot 自動配置 autoConfig 全流程>>瞭解到自動配置的原理和流程,本文演示一個自定義starter demo;

1.正常流程

核心: 自動配置= @Conditional… + …Properties+其他;

新建工程,這裏用springboot演示 ,

1.1製作properties映射類:

在這裏插入圖片描述

1.2.製作autoConfiguration

在這裏插入圖片描述

1.3.將自動配置類加入到springboot自動配置列表

在這裏插入圖片描述

1.4 打包到倉庫,在其他項目引入starter

目錄結構如下
在這裏插入圖片描述

1.5 添加需要的properties

在這裏插入圖片描述

1.6 通過debug啓動,我們看到已經觸發了自動配置

在這裏插入圖片描述
測試發現,這個UserProperties和UserAutoConfiguration類都是JavaConfig形式的Bean;
在這裏插入圖片描述

2.@Conditionalxxx作用

在上面的1.5步驟中看到,當我們的properties提供齊全時,流程正常;

2.1 當properties不全時,

在這裏插入圖片描述
自動配置類並沒有生效,符合預期;因爲類上有@ConditionalOnProperty({“demo1.starter.begin”})
當屬性存在時,才觸發;
在這裏插入圖片描述
@ConditionalOnMissingBean({Test1.class})同理,當Test1的bean不存在時,纔會初始化Test1,
在這裏插入圖片描述

總結:
封裝一個starter就是默認提供實現,但開關留給了用戶,
核心: 自動配置= @Conditional… + …Properties+其他;

之前封裝SDK,現在封裝starter,各自有各自的場景,功能也有很大重疊的地方;
思考:兩個是等於嗎? 自動配置==SDK?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章