Springboot3自定義starter筆記

場景:抽取聊天機器人場景,它可以打招呼。 效果:任何項目導入此 starter
都具有打招呼功能,并且問候語中的人名需要可以在配置文件中修改。

  1. 創建自定義 starter 項目,引入 spring-boot-starter 基礎依賴。
    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
  1. 編寫模塊功能,引入模塊所有需要的依賴。
  2. 編寫 xxxAutoConfiguration 自動配置類,幫其他項目導入這個模塊需要的所有組件。
  3. 編寫配置文件 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports指定啟動需要加載的自動配置。
  4. 其他項目引入即可使用

業務代碼

在這里插入圖片描述

@Service
public class RobotService {@AutowiredRobotProperties robotProperties;public String sayHello(){return "hello"+robotProperties.getName()+":"+robotProperties.getAge()+"郵箱"+robotProperties.getEmail();}
}

寫下面代碼為了進行屬性綁定,配置文件(application.properties)配了什么屬性項這個類里面都可以直接進行綁定關聯(在配置文件中寫的數據通過這個配置文件,在業務代碼中引入RobotProperties robotProperties并進行自動注入,就會通過這個來獲取配置文件中的屬性)

@ConfigurationProperties(prefix = "robot")
@Component
@Data
public class RobotProperties {private String name;private String age;private String email;
}
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

在這里插入圖片描述

基本抽取

  1. 創建starter項?,把公共代碼需要的所有依賴導? 把公共代碼復制進來
    在這里插入圖片描述
    不選場景
    在這里插入圖片描述
    在這里插入圖片描述
    引入需要的web包

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
    </dependency>
    

刪除主程序類
在這里插入圖片描述
在新項目中導入該starter
在這里插入圖片描述

  1. ??寫?個 RobotAutoConfiguration ,給容器中導?這個場景需要的所有組件
    為什么這些組件默認不會掃描進去?
    starter所在的包和 引?它的項?的主程序所在的包不是??層級
    在這里插入圖片描述
    在這里插入圖片描述
  2. 別?引?這個 starter ,直接導?這個 RobotAutoConfiguration ,就能把這個場景的組件導?進來

使用@EnableXxx機制

在這里插入圖片描述

完全自動配置

  1. 依賴SpringBoot的SPI機制
  2. META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
    ?件中編寫好我們?動配置類的全類名即可
  3. 項?啟動,?動加載我們的?動配置類
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83158.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83158.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx與Tomcat負載均衡集群配置指南

目錄 一、資源清單 二、基礎環境 三、安裝配置Tomcat 四、安裝配置Nginx 一、資源清單 主機 操作系統 IP地址 tomcat1 OpenEuler24.03 192.168.16.142 tomcat2 OpenEuler24.03 192.168.16.143 Nginx OpenEuler24.03 192.168.16.144 二、基礎環境 hostnamectl …

【數據處理】xarray 數據處理教程:從入門到精通

目錄 xarray 數據處理教程&#xff1a;從入門到精通一、簡介**核心優勢** 二、安裝與導入1. 安裝2. 導入庫 三、數據結構&#xff08;一&#xff09;DataArray&#xff08;二&#xff09; Dataset&#xff08;三&#xff09;關鍵說明 四、數據操作&#xff08;一&#xff09;索…

網站漏洞存在哪些危害,該如何做好預防?

網站漏洞的危害及預防措施 一、網站漏洞的主要危害 網站漏洞是攻擊者利用系統、應用或配置中的缺陷&#xff0c;實施惡意行為的入口。其危害包括但不限于以下方面&#xff1a; 數據泄露與隱私侵犯 危害&#xff1a;攻擊者通過SQL注入、XSS等漏洞竊取用戶數據&#xff08;如密…

WEB攻防-PHP漏洞解析

Web攻防之PHP漏洞解析 目錄結構 引言 1.1 PHP在CTF Web方向的核心地位1.2 報告目標與結構說明1.3 PHP安全研究的方法論代碼執行漏洞 2.1 漏洞原理與歷史演進2.2 危險函數全解析與利用鏈2.3 繞過過濾的20種高級技巧2.4 實戰案例&#xff1a;從CVE到CTF賽題復現2.5 防御方案與安…

YOLO11解決方案之距離計算探索

概述 Ultralytics提供了一系列的解決方案&#xff0c;利用YOLO11解決現實世界的問題&#xff0c;包括物體計數、模糊處理、熱力圖、安防系統、速度估計、物體追蹤等多個方面的應用。 測量兩個物體之間的間距被稱為特定空間內的距離計算&#xff0c;YOLO11使用兩個邊界框的中心…

mongodb處理時區轉換問題

1. 程序查詢直接使用&#xff08;java&#xff09;Date即可, 因為直接支持 2. 若方便查看日期需要進行格式和時區轉換 db.task.aggregate([{ $match: {userId: 113633}},{ $project: {userId: 1,endTime: 1,formattedDate: {$dateToString: {format: "%Y-%m-%d %H:%M:%S&…

基于中心點預測的視覺評估與可視化流程

基于中心點預測的視覺評估與可視化流程 基于中心點預測的視覺評估與可視化流程一、腳本功能概覽二、可視化與評分機制詳解1. 真實框解析2. 調用模型處理幀3. 預測中心點與真實值的對比4. 打分策略5. 圖像可視化三、目錄結構要求四、運行方式五、應用場景與拓展思路六、總結七,…

Comparator 比較器

在Java中&#xff0c;Comparator.comparingInt(String::length) 是一個用于創建比較器&#xff08;Comparator&#xff09;的靜態方法調用&#xff0c;它的核心作用是定義一個比較規則&#xff0c;使對象按照特定屬性&#xff08;這里是字符串長度&#xff09;進行比較。下面從…

無人設備遙控器之無線通訊技術篇

無人設備遙控器的無線通訊技術是確保遙控操作準確、穩定、高效進行的關鍵。以下是對無人設備遙控器無線通訊技術的詳細解析&#xff1a; 一、主要無線通訊技術類型 Wi-Fi通訊技術 原理&#xff1a;基于IEEE 802.11標準&#xff0c;通過無線接入點&#xff08;AP&#xff09;…

Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(七)

Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;七&#xff09; 在 Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;六&#xff09;-CSDN博客 的基礎上改進&#xff0c;主要是…

ET EntityRef EntityWeakRef 類分析

EntityRef EntityWeakRef 相同點 也是這兩個的作用&#xff1a;這兩個都是用來表示一個實體引用。一般來說使用一個對象&#xff0c;直接持有對象就可以&#xff0c;但是如果對象來自于對象池&#xff0c;這個時候直接持有對象不合適&#xff0c;對象可能已經被對象池回收&…

基于Leaflet和天地圖的免費運動場所WebGIS可視化-以長沙市為例

目錄 前言 一、免費運動場所數據整理 1、本地寶數據簡介 2、Java后臺數據解析 二、Leaflet前端地圖展示 1、基礎數據準備 2、具體位置及屬性標記 三、成果展示 1、空間位置分布 2、東風路立交橋運動公園 3、芙蓉區花侯路瀏陽河大橋下方 4、梅嶺國際小區 5、湖南大學…

Flutter——數據庫Drift開發詳細教程(六)

目錄 1.視圖2.視圖中列的可空性3.DAO4.流查詢5.高級用途6.注意事項 1.視圖 也可以將SQL 視圖定義 為 Dart 類。為此&#xff0c;請編寫一個抽象類來擴展View。此示例聲明了一個視圖&#xff0c;用于讀取示例中架構中某個類別中添加的待辦事項數量&#xff1a; abstract class C…

Kafka 4.0版本的推出:數據處理新紀元的破曉之光

之前做大數據相關項目&#xff0c;在項目中都使用過kafka。在數字化時代&#xff0c;數據如洪流般涌來&#xff0c;如何高效處理這些數據成為關鍵。Kafka 就像是一條 “智能數據管道”&#xff0c;在數據的世界里扮演著至關重要的角色。如果你第一次接觸它&#xff0c;不妨把它…

RabbitMQ高級篇-MQ的可靠性

目錄 MQ的可靠性 1.如何設置數據持久化 1.1.交換機持久化 1.2.隊列持久化 1.3.消息持久化 2.消息持久化 隊列持久化&#xff1a; 消息持久化&#xff1a; 3.非消息持久化 非持久化隊列&#xff1a; 非持久化消息&#xff1a; 4.消息的存儲機制 4.1持久化消息&…

ctfshow權限維持

1&#xff0c;web670 我們先看一下這個php代碼 error_reporting(0);#關閉錯誤報告 highlight_file(__FILE__);#內容高亮顯示$a$_GET[action];#get傳參switch($a){case cmd:eval($_POST[cmd]);break;case check:file_get_contents("http://checker/api/check");#獲取…

力扣算法ing(71 / 100)

5.15 哈希表合集—349.兩個數組的交集 給定兩個數組 nums1 和 nums2 &#xff0c;返回 它們的 交集 。輸出結果中的每個元素一定是 唯一 的。我們可以 不考慮輸出結果的順序 。 示例 1&#xff1a; 輸入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 輸出&#xff1a;[2]示例…

(面試)Handler消息處理機制原理

Handler是用于實現線程間通信和任務調度的一種機&#xff08;Handler、 Looper、MessageQueue、 Message&#xff09;。Handler 允許線程間發送Message或Runnable對象進行通信。在Android中UI修改只能通過UI Thread&#xff0c;子線程不能更新UI。如果子線程想更新UI&#xff0…

Dify 實戰教程 | 5分鐘打造文本生成應用( Stable Diffusion 提示詞生成器)

AI 繪畫離不開「提示詞&#xff08;Prompt&#xff09;」——如何構造清晰、生動、有表現力的提示詞&#xff0c;直接決定你生成圖像的質量。而 Stable Diffusion 的提示詞構造相比 Midjourney 更加自由&#xff0c;但也更考驗組織語言的能力。 今天這篇教程&#xff0c;教你零…

RPC框架源碼分析學習(二)

RPC框架源碼分析與原理解讀 前言 在分布式系統開發中&#xff0c;遠程過程調用(RPC)是一項基礎且關鍵的技術。通過對KVstorageBaseRaft-cpp項目RPC模塊的源碼分析&#xff0c;我深入理解了RPC框架的工作原理和實現細節。本文將從程序員視角分享我的學習心得。 框架概述 本項…