我在配置文件里面配置了一个数据源,数据源参数是根据配置文件加载。数据源在mybaits和自定义数据工具类中使用,但是启动工程后,报错如下: 
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driverClassName}' 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 

------------------------------
2012年8月28日

通过错误日志,猜测是MapperScannerConfigurer早于PropertyPlaceholderConfigurer初始化的原因。 

尝试将 
Java代码 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
 <property name="locations">    
 <list>    
 <value>classpath:resource/conf/jdbc.properties</value>    
 <value>classpath:resource/conf/sys.properties</value>    
 </list>    
 </property>    
 </bean>   
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
<list> 
<value>classpath:resource/conf/jdbc.properties</value> 
<value>classpath:resource/conf/sys.properties</value> 
</list> 
</property> 
</bean> 

修改为 
<util:properties id="jdbcProps" location="classpath:jdbc.properties"/>
使用util:properties替代上面的propertyConfigurer。

***************************************************
2012-12-05
MapperScannerConfigurer初始化的时候,PropertyPlaceholderConfigurer还没有将properties的参数值替换,所有导致直接将参数名,如“${jdbc.driverClassName}”设置到dataSource的字段属性中。

同时,官方已经弃用了采用sqlSessionFactoryBean 和 SesionTemplateBean的方式进行配置,而推荐使用sqlSessionFactoryBeanName 和  sqlSessionTemplateBeanName

所以正确的配置应该为:
<!-- 扫描映射器,自动创建 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="..." />

<property name="sqlSessionTemplateBeanName" value="fsasSqlSession" />

</bean>

----------------------------
在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。 

-------------------------------------
在3.1.1版本中配置的时候提供了以下:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
<property name="basePackage" value="com.xxxx.dal.mapper" /> 
<property name="sqlSessionFactoryBeanName" value="ysSqlSessionFactory" />
 <!-- <property name="sqlSessionFactory" ref="ysSqlSessionFactory"></property> -->
 </bean>
改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean,所以不会引发提前初始化问题。

Mybaits 使用多数据库源错误 --MapperScannerConfigurer配置的更多相关文章

  1. 在Nutz中如何配置多个数据库源,并且带事务控制

    在Nutz中如何配置多个数据库源,并且带事务控制  发布于 560天前  作者 Longitude 995 次浏览  复制  上一个帖子  下一个帖子  标签: 无 在Nutz中如何配置多个数据库源, ...

  2. CAFFE(FAQ.1):Ubuntu 配置caffe 框架之数据库读取错误:ImportError: No module named lmdb解决办法

    Z: 在安装了caffe框架后需要读取大量的数据进行学习训练.比如在MNIST识别训练中,一般直接读图片会比较耗时,我们一般将图片转存为数据库中.目前主流的数据库有以下两种选择: LevelDB Lm ...

  3. Linux中数据库的安装和配置(MySQL与Maria DB)

    目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...

  4. Mysql5.7.34 数据库源码编译安装

    Mysql 数据库源码编译安装 MySQL是一个关系型数据库管理系统,关系型数据库是将数据保存在不同的表中,而非将所有数据放在一个大仓库内,这样就加快了速度并提高了灵活性.由于其体积小.速度快.总体拥 ...

  5. EDKII Build Process:EDKII项目源码的配置、编译流程[三]

    <EDKII Build Process:EDKII项目源码的配置.编译流程[3]>博文目录: 3. EDKII Build Process(EDKII项目源码的配置.编译流程) -> ...

  6. ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开ORACLE企业管理器(EM)的解决办法

    环境:win7 64位系统. 软件:oracle11g database ,oracle 10g client . 问题描述:在win7 64位系统下安装oracle11g,在创建数据库时,进度到85 ...

  7. EF + MySql 错误:配置错误 无法识别的元素“providers”

    “/”应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法识别的元素“providers” ...

  8. 源码编译配置lnmp部署zabbix

    环境说明: [root@wcy ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@wcy ~]# uname -a Linux ...

  9. 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用

    2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...

随机推荐

  1. [leetcode]Remove Duplicates from Sorted List II @ Python

    原题地址:https://oj.leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 题意: Given a sorted link ...

  2. ScaleIO 1.32现在可以免费下载安装使用了(除生产环境之外)

    EMC World 2015会上宣布, ScaleIO 1.32可以免费下载使用在非生产环境上了. 这个可以免费下载的版本叫做Free and Drictionless (F&F) downl ...

  3. ASP.NET 网站管理工具介绍

    有没有感觉对 web.config 的操作很烦呢? 老是手动来编辑 web.config 确实挺麻烦的, 不过自 ASP.NET 2.0 起便有了 ASP.NET 网站管理工具, 这个工具呢,其实就是 ...

  4. NodeJS之Mac初体验

    NodeJS之前在Window试用过一下,不过在mac上这种类Unix上属于第一次使用,JavaScript是脚本语言,脚本语言都需要一个解析器才能运行,通常我们在Html页面写的JS,浏览器充当了解 ...

  5. Edit Distance leetcode java

    题目: Given two words word1 and word2, find the minimum number of steps required to convert word1 to w ...

  6. Reverse Words in a String leetcode java

    题目: Given an input string, reverse the string word by word. For example, Given s = "the sky is ...

  7. checkbox反复调用attr('checked', true/false)只有第一次生效

    /** * 全选 */ function checkAll() { $("input[name=ids]").attr("checked", true); } ...

  8. background: inherit制作倒影、单行居中两行居左超过两行省略

    1.background: inherit;制作倒影 方法很多,但是我们当然要寻找最快最便捷的方法,至少得是无论图片怎么变化,div 大小怎么变化,我们都不用去改我们的代码. -webkit-box- ...

  9. 【Git】Git-add之后-忽略部分文件的方法

    Git-add之后-忽略部分文件的方法 SparkKafkaDemo - Streaming Statistics git add 部分_百度搜索 (1 封私信)git 中如何撤销部分修改? - 知乎 ...

  10. 【大数据】MongoDB安装(转)

    https://note.youdao.com/share/?id=40be7f77434910e8860c5fd1ef5d24fe&type=note#/ MongoDB安装 环境 Cent ...