亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

測試時為什么注入的是接口而不是實現類

測試service層時,注入SeckillService而不是SeckillServiceImpl

正在回答

2 回答

這是我在做spring和mybatis整合的時候出現的問題。

這個問題的根本在于動態代理類生成代理對象。動態代理有兩種的實現方式jdk和cglib的方式,這兩種方式也是AOP的,實現原理。




原因所在:出現如果直接注入實現類會出現沒有對應的bean,因為我們通過實現類來繼承的接口,然而,必須使用jdk提供的動態代理放法,而不使用接口直接對實現類進行注入,則為cglib的注入,而不能既繼承接口又使用實現類來注入的方式,這樣兩種代理類都是沒有辦法使用的


0 回復 有任何疑惑可以回復我~
#1

馬路墩子 提問者

您的意思是JDK動態代理只能代理接口,CGLib代理才能為類生成動態代理,這個我知道,然后是因為默認使用JDK代理,所以是默認為接口生成bean,所以實現類沒有對應的bean,請問我理解的對嗎?那如果我在配置文件里為實現類配置一個bean,強制使用CGLib代理,這時可以注入實現類的bean嗎?
2018-06-09 回復 有任何疑惑可以回復我~

可以看jdk的動態代理源代碼就知道了

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

測試時為什么注入的是接口而不是實現類

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號