我的项目中用到了spring3.2.5+mybatis3.1.1+mybatis-spring1.2.1,我把数据库连接信息写在配置文件里,然后在spring配置文件中加上<context:property-placeholder location="file:D:\foxking\taobao.properties" /> 来引入,dataSource配置如下:
程序一运行就报:java.lang.ClassNotFoundException: ${driverClass} ............等一大堆错误,spring 配置检查了N多遍,没发现问题,让我很郁闷。于是不停的百度、Google,不停的改配置、测试,问题依然没有解决。后来终于找到了解决方法。
先说一下问题的原因所在:
在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法获取到properties文件里的内容。 导致这一原因是因为,MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了。 但如果不设置sqlSessionFactory 属性的话,就必须要保证sessionFactory在spring中名称一定要是sqlSessionFactory ,否则就无法自动注入。又或者直接定义 MapperFactoryBean ,再或者放弃自动代理接口方式。
出问题的原因找到了,现在再找方法解决问题,方法如下:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xxxx.dao.mapper" />
<property name="sqlSessionFactoryBeanName" value="sf1" />
<!-- <property name="sqlSessionFactory" ref="sf1"></property> -->
</bean>
改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean,所以不会引发提前初始化问题。
本文参考自http://www.oschina.net/question/188964_32305?sort=default&p=1#answers
相关推荐
使用IDEA启动项目遇见ClassNotFoundException的解决方案 在使用IDEA启动项目时,可能会遇见ClassNotFoundException的错误,导致项目无法启动。本文将详细介绍使用IDEA启动项目遇见ClassNotFoundException的正确解决...
在开发过程中,有时会遇到使用JSP连接SQL Server 2021时出现连接问题,本文将详细解析这些问题及其解决方案。 首先,让我们了解基础概念。JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,它允许...
- `java.lang.ClassNotFoundException`: 确保你的类路径包含了所有依赖库。 - `SPARK_HOME`未设置:检查环境变量是否正确设置。 - 内存不足:如果遇到内存问题,可以尝试降低`--executor-memory`或`--driver-...
但在实际操作过程中,可能会遇到一个常见的异常:“Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”。这个异常主要是由于Java环境未能找到对应的MySQL数据库驱动类导致的。...
根据提供的标题、描述以及部分代码内容,我们可以总结出...通过以上内容,我们可以了解到使用Java连接SQL Server数据库的基本步骤、常见问题及其解决方案。在实际开发过程中,还需要根据具体的环境和需求来进行调整。
根据提供的文档信息,我们可以归纳总结出一系列与Spring MVC框架相关的常见问题及解决方案。这些问题主要集中在配置错误、依赖缺失以及常见的异常处理等方面。 ### Spring MVC 项目常见错误与配置 #### 1. Java....
### MySQL JDBC连接数据库常见错误及解决方案 #### 一、引言 在使用Java进行数据库操作时,通过JDBC(Java Database Connectivity)连接MySQL数据库是非常常见的做法。然而,在实际开发过程中,经常会遇到各种连接...
`java.lang.ClassNotFoundException: com.mysql.jdbc.Driver`这个异常表明程序在尝试使用`Class.forName()`方法加载数据库驱动时,找不到对应的类。这通常是因为缺少了mysql-connector-java驱动库。在Java项目中,...