当前在线人数9604
首页 - 分类讨论区 - 电脑网络 - 热门网络技术版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
使用MapperScannerConfigurer时出现的错误
[版面:热门网络技术][首篇作者:Chinatoone] , 2018年09月04日11:14:37 ,100次阅读,0次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
Chinatoone
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: Chinatoone (小小夏), 信区: EmergingNetworking
标  题: 使用MapperScannerConfigurer时出现的错误
发信站: BBS 未名空间站 (Tue Sep 4 11:14:37 2018, 美东)

在mybatis和spring整合时:
在spring中创建mapper接口生成代理对象时,一个mapper需对应配置一个bean,将非常
繁琐。为了简化配置,可以使用MapperScannerConfigure,这样只需传入mapper所在包
路径,通过扫描包即可获取所有的mapper,并将扫描到的所有mapper接口自动生成代理
对象,并在spring中注入。
配置方法为:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 指定扫描的包名
       如果扫描多个包,每个包之间使用半角逗号隔开。
    -->
    <property  name="basePackage" value="chang.ssm.mapper"/>
</bean>
一般数据源为单例时,不会报错,因为MapperScannerConfigurer中会自动配置加载为
单例模式的sqlSessionFactory,而当不是单例时,就需要去加入sqlSessionFactory的
属性了,好奇心驱使,即是是单例模式我也加入了sqlSessionFactory我开始用的是这
种:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property  name="basePackage" value="chang.ssm.mapper"/>
    <property name="sqlSessionFactory" value="sqlSessionFactory"/>

</bean>
然后很悲剧地报错了:
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in
class path resource [spring/applicationContext.xml]: Initialization of bean
failed; nested exception is org.springframework.beans.
ConversionNotSupportedException: Failed to convert property value of type '
java.lang.String' to required type 'org.apache.ibatis.session.
SqlSessionFactory' for property 'sqlSessionFactory'; nested exception is
java.lang.IllegalStateException: Cannot convert value of type [java.lang.
String] to required type [org.apache.ibatis.session.SqlSessionFactory] for
property 'sqlSessionFactory': no matching editors or conversion strategy
found
经过排查,并去各处用各种方法寻找答案,发现出现这种情况的原因是:
配置MapperScannerConfigurer所在的bean在加载配置的sqlSessionFactory之前加载,
即当扫描到并生成mapper的实例化对象时,sqlSession工厂尚未加载成功,因此出现错
误。
可以将它的name改为:sqlSessionFactoryBeanName即可解决问题。即:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property  name="basePackage" value="chang.ssm.mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

</bean>

--

※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM:172.]

 
[分页:1 ]
[快速返回] [ 进入热门网络技术讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996