天天看點

當動态代理遇到ioc

圖1 問題的引出

當動态代理遇到ioc

根本原因:動态代理和cglib,會丢掉被代理類成員變量和方法上的注解

起先,我們禁止被增強的類裡面使用注解注入依賴,代碼會自動稽核這種情況

實用性太差,放棄  

後來有了圖2 解決方案,有點像:結合自定義注解的 spring 動态注入中userservic自動裝配到usercontroller中,userservice是帶@service類,usercontroller是動态注入的類,手動将工廠中userservice執行個體裝配到usercontroller 的userservice對象上

當動态代理遇到ioc

設計用例:

本文中,分三步走

1 設原始類a,代理類aplus對a進行jdk動态代理,通過@bean(spring)或provider(guice)手動注入類到factory

2 其它環境中的類會依賴a,以@autowired(spring)或@inject(guice)修飾

2 a本身依賴的類在private對象(設b)上,由于a沒有注入,注入的是其代理類aplus,故a上的以@autowired(spring)或@inject(guice)修飾的依賴不會自動裝配,我們手動将工廠中相應類型的執行個體set上去,運作期檢視b是否為null

​​work log​​ 中有1 2 3詳細代碼

jdk動态代理代碼: