mybatis整合Spring报错No bean named ‘sqlSessionFactoryBean‘ is defined
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userMapper’ defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean ‘sqlSessionFactoryBean’ while setting bean property ‘sqlSessionFactory’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘sqlSessionFactoryBean’ is defined
果然照抄不可取,在没有任何理解的情况下,报错可以说是包分之九十九的,而且改起来相当麻烦。
今天在整合spring和mybatis的时候报错,一直有问题。改了好长时间改过大大小小各个地方最后总算是改出来了。
-
No bean named ‘sqlSessionFactoryBean’ is defined这个意思是找不到sqlSessionFactoryBean
-
这个要涉及到ref和value的区别了
1.ref引用一个已经存在的对象
value创建一个新的对象
2.value可以赋一些简单类型的值和对象的值
ref可以引用其他的bean对象。
-
使用ref的时候,spring容器会在引用后进行验证,验证当前的xml是否存在引用的bean,使用value的时候,spring会在容器启动,实例化bean的时候进行验证。
我错就错在spring在实例化userMapperd的时候要注入已经存在的id为sqlSessionFactoryBean的bean对象,但是我在前面实例化相关对象的时候设置的id是sqlSessionFactory所以会报错找不到sqlSessionFactoryBean
改错后的代码