遇到的問題: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