圖1 問題的引出
根本原因:動态代理和cglib,會丢掉被代理類成員變量和方法上的注解
起先,我們禁止被增強的類裡面使用注解注入依賴,代碼會自動稽核這種情況
實用性太差,放棄
後來有了圖2 解決方案,有點像:結合自定義注解的 spring 動态注入中userservic自動裝配到usercontroller中,userservice是帶@service類,usercontroller是動态注入的類,手動将工廠中userservice執行個體裝配到usercontroller 的userservice對象上
設計用例:
本文中,分三步走
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動态代理代碼: