爲什麼xxxController注入的是xxxService,而不是xxxServiceImpl?

【正常開發如下】:xxxMapper.xml,xxxMapper類,xxxService接口,xxxServiceImpl實現類,xxxController控制類……其中,xxxServiceImpl實現類注入xxxMapper類,xxxController控制類中注入xxxService接口

【問題】:爲什麼xxxController注入的是xxxService,而不是xxxServiceImpl?

【原因】: 在controller---->service---->serviceImpl---->dao的模式下,表面注入的是接口,實際注入的是實現類對象(實現類唯一)。這種controller---->serviceImpl---->dao模式也是可以的,可以對實現類增強,如事務、日誌等(AOP動態代理實現)。

@Autowired的對象是通過接口的話,Spring默認會使用jdk動態代理,jdk動態代理只能對實現了接口的類生成代理,而不能針對類,而且還可以對實現類對象做增強得到增強類(增強類與實現類是兄弟關係,增強類不能用實現類接收增強類對象,只能用接口接收)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章