ApplicationContext無法加載bean的問題

遇到的問題:Bean沒有找到

(NoSuchBeanDefinitionException: No qualifying bean of type [com.dao.Dao] found for dependency:)

解決過程:

我就通過分析整個bean加載流程,來提示過程中可能出錯的地方。

(一)

Context(上下文)相當于一個“容器”,起到承上啟下的作用,可以加載bean、也可以調(diào)用其中的bean。

ApplicationContext(bean容器)

它可以加載配置文件中定義的bean,將所有的bean集中在一起,當有請求的時候分配bean。

ApplicationContext實現(xiàn)方式(獲得bean):

1.FileSystemXmlApplicationContext

2.ClassPathXmlApplicationContext

注意:要加載哪個bean就添加對應的bean配置文件。Bean配置文件出錯會出現(xiàn)無法加載bean的問題。

=========================================================

(二)

jdbc

我們在做jdbc的時候會編寫Dao接口和Dao實現(xiàn)類。

缺點:

(1)dao接口實現(xiàn)類方法中存在大量模板方法,如:通過SqlSessionFactory創(chuàng)建SqlSession,調(diào)用SqlSession的數(shù)據(jù)庫操作方法。

(2)調(diào)用sqlSession的數(shù)據(jù)庫操作方法需要指定statement的id,這里存在硬編碼(就是在程序中將代碼寫死)。

mybatis框架

Mapper動態(tài)代理方式:只需要寫Mapper接口,然后按照規(guī)范進行配置,MyBatis就會自動實現(xiàn)類似Dao實現(xiàn)。

spring+mybatis框架

mybatis-spring.jar包中提供了MapperScannerConfigurer(API)

根據(jù)指定包批量掃描Mapper接口生成實例,并注冊對應的MapperFactoryBean對象。如下圖:

注意:如果掃描包的位置出錯,也可能出現(xiàn)找不到bean的情況。

前面的ClassPathXmlApplicationContext("classpath:conf/spring*.xml");

會自動掃描“以sping為開頭的”xml配置文件中的bean。并注入到ApplicationContext中。


-----------------------------------------------------------------------------------------------------------------------

技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始,找個師兄,帶你入門,掌控自己學習的節(jié)奏,學習的路上不再迷?!薄?/p>

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧 !IT修真院http://www.jnshu.com/login/1/10031132

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容