遇到的问题:Bean没有找到
(NoSuchBeanDefinitionException: No qualifying bean of type [com.dao.Dao] found for dependency:)
解决过程:
我就通过分析整个bean加载流程,来提示过程中可能出错的地方。
(一)
Context(上下文)相当于一个“容器”,起到承上启下的作用,可以加载bean、也可以调用其中的bean。
ApplicationContext(bean容器)
它可以加载配置文件中定义的bean,将所有的bean集中在一起,当有请求的时候分配bean。
ApplicationContext实现方式(获得bean):
1.FileSystemXmlApplicationContext
2.ClassPathXmlApplicationContext
注意:要加载哪个bean就添加对应的bean配置文件。Bean配置文件出错会出现无法加载bean的问题。
=========================================================
(二)
jdbc
我们在做jdbc的时候会编写Dao接口和Dao实现类。
缺点:
(1)dao接口实现类方法中存在大量模板方法,如:通过SqlSessionFactory创建SqlSession,调用SqlSession的数据库操作方法。
(2)调用sqlSession的数据库操作方法需要指定statement的id,这里存在硬编码(就是在程序中将代码写死)。
mybatis框架
Mapper动态代理方式:只需要写Mapper接口,然后按照规范进行配置,MyBatis就会自动实现类似Dao实现。
spring+mybatis框架
mybatis-spring.jar包中提供了MapperScannerConfigurer(API)
根据指定包批量扫描Mapper接口生成实例,并注册对应的MapperFactoryBean对象。如下图:
注意:如果扫描包的位置出错,也可能出现找不到bean的情况。
前面的ClassPathXmlApplicationContext("classpath:conf/spring*.xml");
会自动扫描“以sping为开头的”xml配置文件中的bean。并注入到ApplicationContext中。
-----------------------------------------------------------------------------------------------------------------------
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !IT修真院:http://www.jnshu.com/login/1/10031132