Spring-靜態代理VS動態代理/實現代理ProxyFactory

文章目錄

    • 靜態代理VS動態代理
    • Spring實現代理
      • ProxyFactory
    • 工作中遇到問題整理
      • 動態代理異常com.sun.proxy.$Proxy0 cannot be cast to

靜態代理VS動態代理

靜態代理VS動態代理
參考URL: https://blog.csdn.net/qq_25881443/article/details/103245938
【java項目實戰】代理模式(Proxy Pattern),靜態代理 VS 動態代理
參考URL: https://blog.csdn.net/jiuqiyuliang/article/details/38423811

代理:不用改變源碼而增強方法
動態代理有AOP的思想,面向切面編程,基于方法的切面

  1. 靜態代理:
    資源類接口UserManager

    實現類UserManagerImp 增刪查改方法

    代理類UserManagerImpProxy 增強方法 -> 增刪查改的前后通知
    代碼冗余,需要為每個類都寫一個代理類對象

  2. 動態代理
    只寫一個代理類,通過反射機制實現動態代理
    需要java.lang.reflect.InvocationHandler接口和 java.lang.reflect.Proxy 類的支持

Spring實現代理

JDK、CGLIB、Spring 三種實現代理的區別(三)Spring的ProxyFactory
參考URL: https://blog.csdn.net/sunnycoco05/article/details/78901449
為了讓大家理解Spring Aop利器ProxyFactory,我已經拼了
參考URL: https://baijiahao.baidu.com/s?id=1659872326546139979&wfr=spider&for=pc

Spring中代理對象可通過xml配置方式獲得,也可通過ProxyFactory手動編程方式創建對象。我們主要講手動編程的方式。Spring中的代理對象其實是JDK Proxy和CGLIB Proxy 的結合。

ProxyFactory

ProxyFactory就springAOP創建代理的工廠

ProxyFactory,全稱:org.springframework.aop.framework.ProxyFactory,spring帝國spring aop軍工廠boss,職責就是生產proxy,即,代理工廠。

工作中遇到問題整理

動態代理異常com.sun.proxy.$Proxy0 cannot be cast to

動態代理異常com.sun.proxy.$Proxy0 cannot be cast to
參考 https://blog.csdn.net/Tritoy/article/details/81019956

意思大致是說com.sun.proxy.$Proxy0不能進行強制轉換…

jdk動態代理的過程中,生成動態代理對象與目標對象要是同一個接口:也就是說在使用動態代理時,用來生成代理的委托對象必須是一個接口。

改錯后:

public class Dog implements DogI{public void say() {System.out.println("miaomiaomiao");}
public static void main(String[] args) {DogI dog = (DogI)new DogJDKPROXY().getProxyObject(new Dog());dog.say();}

Dog是繼承了DogI接口的。

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

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

相關文章

【C語言】剖析qsort函數的實現原理

主頁:17_Kevin-CSDN博客 專欄:《C語言》 本文將從回調函數,qsort函數的應用,qsort函數的實現原理三個方面進行講解,請自行跳轉至相對位置進行閱讀~ 目錄 回調函數 qsort函數的應用 qsort函數實現原理 回調函數 什…

mysql主從庫Slave_SQL_Running: No問題經驗分享

最近在創建mysql主從庫的時候,遇到一個問題。執行 mysql> SHOW SLAVE STATUS\G結果顯示 Slave_IO_Running: Yes Slave_SQL_Running: No 很是苦惱,查詢了很久沒有解決 執行 mysql> SELECT * FROM performance_schema.replication_applier_status_…

獨立游戲《星塵異變》UE5 C++程序開發日志1——項目與代碼管理

寫在前面:本日志系列將會向大家介紹在《星塵異變》這款模擬經營游戲,在開發時用到的與C相關的泛用代碼與算法,主要記錄UE5C與原生C的用法區別,以及遇到的問題和解決辦法,因為這是我本人從ACM退役以后第一個從頭開始的項…

代碼隨想錄算法訓練營第五十天 | 買股票2

目錄 買賣股票的最佳時機III買賣股票的最佳時機IV LeetCode 123.買賣股票的最佳時機III LeetCode 123.買賣股票的最佳時機IV 買賣股票的最佳時機III 給定一個數組,它的第 i 個元素是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。…

牛客周賽 Round 35(A,B,C,D,E,F,G)

這場簡單,甚至賽時90分鐘不到就AK了。比賽鏈接,隊友題解友鏈 剛入住學校監獄,很不適應,最近難受的要死,加上最近幾場CF打的都不順利,san值要爆掉了,只能慢慢補題了。 這場C是個滑動窗口&#…

冒泡排序 和 qsort排序

目錄 冒泡排序 冒泡排序部分 輸出函數部分 主函數部分 總代碼 控制臺輸出顯示 總代碼解釋 冒泡排序優化 冒泡排序 主函數 總代碼 代碼優化解釋 qsort 排序 qsort 的介紹 使用qsort排序整型數據 使用qsort排序結構數據 冒泡排序 首先,我先介紹我的冒泡…

模糊搜索小案例

C#窗體實現數據錄入與模糊搜索小案例 記錄一下 主要代碼 private void button1_Click(object sender, EventArgs e){string name textBox1.Text;string hometown textBox4.Text;string school textBox6.Text;string sex textBox5.Text;string lat textBox3.Text;string …

c#打印BarTend標簽提示:具名數據源沒有cuckoo*具名數據(解決)

c#打印BarTend標簽提示:具名數據源沒有cuckoo*具名數據(解決) 今天咕咕更新打印模板的時候遇到的問題,就是在模版中配置了字段名,但是啟動c#應用,后端發送json數據打印的時候c#報錯提示,沒有在…

python 小游戲《2048》字符版非圖形界面

參考鏈接: 閑談2048小游戲和數組的旋轉及翻轉和轉置 目錄 2048 一、方陣類 二、隨機插入1或2 三、 合并和遞增 四、 判斷和移動 五、 鍵盤控制 完整源代碼 玩法過程 2048 上回說到2048小游戲中數組的各種旋轉、翻轉的方法,就是為代碼編程作準…

第十六天-爬蟲selenium庫

目錄 1.介紹 2.使用 selenium 1.安裝 2.使用 1.測試打開網頁,抓取雷速體育日職乙信息 2.通過xpath查找 3.輸入文本框內容 send_keys 4.點擊事件 click 5.獲取網頁源碼: 6.獲取cookies 7.seleniumt提供元素定位方式:8種 8.控制瀏覽…

Spring Security OAuth2如何自定義返回的 Token 信息

文章目錄 Spring Security OAuth2如何自定義返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint參考Spring Security OAuth2如何自定義返回的 Token 信息 Spring Boot+OAuth2,如何自定義返回的 Token 信息? 參考URL: https://www.jianshu.com/p/b7…

【Go】指針的聲明和初始化

package mainimport "fmt"func main() {// 聲明一個整數變量var num int 42// 聲明一個指向整數的指針變量,并將其初始化為指向整數變量的地址var ptr *int &num// 打印整數變量的值和指針變量的值(即整數變量的地址)fmt.Pri…

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館 時間:2024年9月24日-28日 地點:國家會展中心(上海) 主辦單位:工業和信息化部、國家發展和改革委員會、科學技術部、商務部、中國科學院、中國工程…

【游記】GDOI2024

GDOI2024游記 老年退役選手。NOIP 218 分,GDOI 純純旅游。 Day -5 周日返校,開始停課。 開始攢 rp。 Day -4 模擬賽,犯困,啥也不會。 下午打球。 Day -3 模擬賽,不困,還是啥也不會。 下午打球。 …

CSS3單獨制作移動端頁面布局方式(流式布局、flex彈性布局)

目錄 1. 流式布局(百分比布局)2. flex彈性布局(強烈推薦)2.1 介紹2.2 Flex容器常見屬性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex項目常見屬性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

銀河麒麟之Workstation安裝

一、VMware Workstation簡介 VMware Workstation是一款由VMware公司開發的虛擬化軟件,它允許用戶在一臺物理計算機上運行多個操作系統,并在每個操作系統中運行多個虛擬機。VMware Workstation提供了一個可視化的用戶界面,使用戶可以輕松創建、…

程序環境和預處理(2)

文章目錄 3.2.7 命名約定 3.3 #undef3.4 命令行定義3.5 條件編譯3.6 文件包含3.6.1 頭文件被包含的方式3.6.2 嵌套文件包含 4. 其他預處理指令 3.2.7 命名約定 一般來講函數和宏的使用語法很相似,所以語言本身沒法幫我們區分二者,那我們平時的一個習慣是…

linux條件判斷之if-then

if..then是最常見的條件判斷語句,簡而言之,就是當符合某個條件判斷的時候,就予以進行某項工作。 1.if-then格式 if-then格式1: if [ 條件判斷表達式 ];then 當條件判斷表達式成立時,需執行的命令 fi if-then格式2…

Redis安全加固策略:綁定Redis監聽的IP地址 修改默認端口 禁用或者重命名高危命令

Redis安全加固策略:綁定Redis監聽的IP地址 & 修改默認端口 & 禁用或者重命名高危命令 1.1 綁定Redis監聽的IP地址1.2 修改默認端口1.3 禁用或者重命名高危命令1.4 附:redis配置文件詳解(來源于網絡) 💖The Beg…

驅動開發面試復習

創建字符設備 1 創建設備號 alloc_chrdev_region 2.創建cdev cdev_init 3.添加一個 cdev,完成字符設備注冊到內核 cdev_add 4.創建類 class_create 5.創建設備 device_create 1.內核空間與用戶空間數據 copy_from_user 和copy_to_user 倆個函數來完成。 copy_from_user 函數…