使用spring整合Mybatis中,在spring容器中注册了SqlSessionFactoryBean对象
错误信息:
发生异常(1):org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sqlSessionFactoryBean' is expected to be of type 'org.mybatis.spring.SqlSessionFactoryBean' but was actually of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory'
对象(2):org.apache.ibatis.session.defaults.DefaultSqlSessionFactory@6d9f7a80
我的疑惑是:猜测可能是自动生成代理对象,但是为什么不可以使用SqlSessionFactoryBean类型,然后就是类型自动转换是如何完成的,
还有关于MapperFactoryBean也是跟这个同样的问题(容器中拿出直接会转型为Sqlsession),好奇它是如何实现的。
factoryBean,spring容器中比较特殊的bean,当你想要获得的直接是factoryBean,beanName 会变成&+beanName,这就是你用id 返回factoryBean翻车的原因
如果你获取的不是factoryBean本身,则会调用getObject方法,这里就会返回getObjectType支持的类型
因为它实现的接口中有SqlSessionFactory,而这个接口有两个实现类,其中一个就是DefaultSqlSessionFactory,ioc容器启动时创建单例对象肯定是由这个接口创建的bean
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《Spring学习笔记(十一)。Spring整合MyBatis,applicationContext.xml,sqlSessionTemplate,SqlSessionDaoSupport》, 一起来围观吧 https://blog.csdn.net/weixin_45842494/article/details/122793998?utm_source=app&app_version=5.0.0
希望对你有所帮助,谢谢。