SpringBoot的動態代理默認用的哪個???

在 Spring Boot 中,動態代理的默認實現方式取決于被代理的對象的類型和具體配置:

  1. JDK 動態代理

    • 當代理的對象實現了一個或多個接口時,Spring 默認使用 JDK 動態代理。
    • JDK 動態代理只能代理實現了接口的類。
  2. CGLIB 動態代理

    • 當代理的對象沒有實現任何接口時,Spring 會使用 CGLIB 動態代理。
    • CGLIB 動態代理是通過生成目標類的子類來實現代理的,因此它不要求目標類實現接口。

配置優先級

默認情況下,Spring 會根據上面的規則自動選擇代理方式。但是,如果你希望強制使用特定的代理方式,可以通過配置來實現。例如,在 Spring 的 application.properties 文件中可以配置:

  • 強制使用 JDK 動態代理:

    spring.aop.proxy-target-class=false
    
  • 強制使用 CGLIB 動態代理:

    spring.aop.proxy-target-class=true
    

示例代碼

假設有一個服務接口和它的實現類:

public interface MyService {void performTask();
}@Service
public class MyServiceImpl implements MyService {@Overridepublic void performTask() {// Task implementation}
}

根據默認行為,如果你對 MyServiceImpl 使用代理且沒有任何特殊配置,Spring 將使用 JDK 動態代理,因為 MyServiceImpl 實現了 MyService 接口。

檢查代理類型

你可以通過以下代碼檢查 Spring 使用的是哪種代理:

@Autowired
private ApplicationContext applicationContext;public void checkProxy() {MyService myService = applicationContext.getBean(MyService.class);System.out.println(AopUtils.isJdkDynamicProxy(myService)); // true if using JDK proxySystem.out.println(AopUtils.isCglibProxy(myService));      // true if using CGLIB proxy
}

總之,Spring Boot 默認情況下會根據類是否實現接口來選擇使用 JDK 動態代理或 CGLIB 動態代理。通過配置,可以強制選擇使用哪種代理機制。

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

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

相關文章

Python-PLAXIS自動化建模技術與典型巖土工程案例

有限單元法在巖土工程問題中應用非常廣泛,很多軟件都采用有限單元解法。在使用各大軟件進行數值模擬建模的過程中,巖土工程中的各種問題(塑性、滲流、固結、動力、穩定安全、熱力TM),一步一步地搭建自己的Plaxis模型&a…

dm-verity hashtree的結構

參考了:實現 dm-verity | Android Open Source Project (google.cn)。基于這個添加了一層原始數據,便于理解。 結構圖如下: 對hashtree結構圖的解釋: dev data:表示我們的分區數據。這里我們將dev data按照指定的大…

【C++進階學習】第六彈——set和map——體會用C++來構建二叉搜索樹

set和map基礎:【C進階學習】第五彈——二叉搜索樹——二叉樹進階及set和map的鋪墊-CSDN博客 前言: 在上篇的學習中,我們已經學習了如何使用C語言來實現二叉搜索樹,在C中,我們是有現成的封裝好的類模板來實現二叉搜索樹…

第二講 數據結構

#數組模擬鏈表 #include <iostream> using namespace std; const int N 100010; int head ,e[N], ne[N],idx; //ne[i]表示節點i的next指針是多少 //e[i]表示節點i 的值 //head 表示頭結點的下標 //idx 存儲當前已經用了哪個點 void init() {head -1;//頭結點指向下標為…

前端實現PDF文件打印和下載

在Web開發中&#xff0c;經常需要處理PDF文件&#xff0c;尤其是在業務涉及發票、報告或文檔生成的場景下。本文將詳細介紹如何使用前端技術實現PDF文件的打印和下載&#xff0c;我們將利用HTML5的<embed>元素和JavaScript庫FileSaver.js來完成這一任務。 一、環境準備 …

Python 爬蟲:使用打碼平臺來識別各種驗證碼:

本課程使用的是 超級鷹 打碼平臺&#xff0c; 沒有賬戶的請自行注冊&#xff01; 超級鷹驗證碼識別-專業的驗證碼云端識別服務,讓驗證碼識別更快速、更準確、更強大 使用打碼平臺來攻破驗證碼難題&#xff0c; 是很簡單容易的&#xff0c; 但是要錢&#xff01; 案例代碼及測…

React18+Redux+antd 項目實戰 JS

React18Reduxantd 項目實戰 js Ant Design插件官網 Axios官網 (可配置請求攔截器和響應攔截器) JavaScript官網 Echarts官網 一、項目前期準備 1.創建新項目 hotel-manager npx create-react-app hotel-manager2.安裝依賴 //安裝路由 npm i react-router-domnpm i aixos /…

CentOS搭建郵件服務器:DNS配置方法技巧?

CentOS搭建郵件服務器的流程&#xff1f;如何高效使用CentOS&#xff1f; 在當今數字化時代&#xff0c;郵件服務器的需求日益增加。為了確保郵件能夠順利送達&#xff0c;正確的DNS配置是必不可少的一環。AokSend將詳細介紹在CentOS搭建郵件服務器過程中&#xff0c;如何進行…

SpringBoot新手快速入門系列教程7:基于Redis的一個簡單存取數據的例子

我的教程都是親自測試可行才發布的&#xff0c;如果有任何問題歡迎留言或者來群里我每天都會解答。 新手可能有這樣的疑問&#xff0c;有了數據庫的存取方式&#xff0c;我們為什么還要使用Redis這種緩存數據庫讀取方式呢&#xff1f; 原因主要有以下幾點&#xff1a; 1. 性能…

力扣題解(單詞拆分)

139. 單詞拆分單詞拆分 給你一個字符串 s 和一個字符串列表 wordDict 作為字典。如果可以利用字典中出現的一個或多個單詞拼接出 s 則返回 true。 注意&#xff1a;不要求字典中出現的單詞全部都使用&#xff0c;并且字典中的單詞可以重復使用。 思路&#xff1a; 規定dp[i]…

亞馬遜中小型店鋪如何開店?

對于想要在亞馬遜平臺上開設店鋪的中小型賣家來說&#xff0c;這是一個非常值得關注的話題。作為亞馬遜上的一個重要參與者&#xff0c;中小型店鋪有著廣闊的發展空間和無限的可能性&#xff0c;但也由于成本預算與規模限制&#xff0c;無法與大型店鋪的策略相提并論&#xff0…

字符串模板被噶了,JDK 23 刪除了預覽功能“字符串模板”

之前出了一個視頻&#xff0c;介紹 JDK 23 中的新特性。之后我才發現&#xff0c;在 JDK 21 和 22 中的預覽功能“字符串模板&#xff08;String Templates&#xff09;”&#xff0c;在 JDK 23 中已經沒有了。字符串模板的相關代碼&#xff0c;已經被全部刪除了。 字符串模板的…

Spring Boot 3.3 【二】Spring Boot自動配置機制深度解析

簡單動作&#xff0c;深刻聯結。在這技術海洋&#xff0c;我備好舟&#xff0c;等你揚帆。啟航吧&#xff01; &#x1f31f;點擊【關注】&#xff0c;解鎖定期的技術驚喜&#xff0c;讓靈感與知識的源泉不斷涌動。 &#x1f44d;一個【點贊】&#xff0c;如同心照不宣的默契&a…

Unity免費領場景多人實時協作地編2人版局域網和LAN聯機類似谷歌文檔協同合作搭建場景同步資產設置編輯付費版支持10人甚至更多20240709

大家有沒有用過谷歌文檔、石墨文檔、飛書文檔等等之類的協同工具呢&#xff1f; Blender也有類似多人聯機建模的插件&#xff0c; Unity也有類似的多人合作搭建場景的插件啦。 剛找到一款免費插件&#xff0c;可以支持2人局域網和LAN聯機地編。 付費的版本支持組建更大的團隊。…

詳解如何通過稀疏向量優化信息檢索

在信息檢索方法的發展歷程中&#xff0c;我們見證了從傳統的統計關鍵詞匹配到如 BERT 這樣的深度學習模型的轉變。雖然傳統方法提供了堅實的基礎&#xff0c;但往往難以精準捕捉文本的語義關系。如 BERT 這樣的稠密檢索方法通過利用高維向量捕獲文本的上下文語義&#xff0c;為…

煙霧識別技術在火災預防中的應用:思通數科大模型的力量

引言 火災是導致生命財產損失的重大災害之一。早期檢測和快速響應是預防火災和減少損失的關鍵。結合思通數科大模型的煙霧識別技術&#xff0c;為實時檢測和精確定位煙霧來源提供了一種高效的解決方案。本文將探討這一技術如何有效預防火災并保障人員安全。 煙霧識別技術概述 …

注冊自定義總線

1、在/sys/bus下注冊一個自定義總線 #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h> #include<linux/kobject.h> #include<linux/slab.h> #include<linux/sysfs.h> #include<linux/device.h> #include…

bug修復 修復修復修復

好的&#xff0c;這里是更新后的代碼&#xff0c;將所有 inRange 函數的第一個變量替換為 ZoomOutimage&#xff1a; // 綠色分岔路 if (divergerColor "green" && nextColor "null") {cv::Mat frameGreen, frameRed;frame2.copyTo(frameGreen)…

如何在 Fedora 中使用 `shred` 擦除驅動器或文件

English Version: https://blog.csdn.net/sch0120/article/details/140390161 如何在 Fedora 中使用 shred 擦除驅動器或文件 安全擦除驅動器對于保護您的敏感數據免受未授權訪問至關重要。在這篇博文中&#xff0c;我們將學習如何在 Fedora 中使用 shred 命令安全擦除整個驅…

FATE Flow 源碼解析 - 作業提交處理流程

背景介紹 FATE 是隱私計算中最有名的開源項目了&#xff0c;從 star 的數量上來看也可以看出來。截止 2023 年 3 月共收獲 4.9k 個 star&#xff0c;但是 FATE 一直被認為代碼框架復雜&#xff0c;難以理解&#xff0c;作為一個相關的從業者&#xff0c;后續會持續對 FATE 項目…