前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Could not load driverClass ${jdbc.driver}

Could not load driverClass ${jdbc.driver}

作者头像
沁溪源
发布2020-09-03 11:14:13
8730
发布2020-09-03 11:14:13
举报
文章被收录于专栏:沁溪源

今天在整合ssm做spring-mvc的Junit测试时,出现这样的错误如下:

代码语言:javascript
复制
Could not load driverClass ${jdbc.driver}
java.lang.ClassNotFoundException: ${jdbc.driver}
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.mchange.v2.c3p0.DriverManagerDataSource.ensureDriverLoaded(DriverManagerDataSource.java:100)
	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:132)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
	at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
	at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

spring-dao.xml配置如下:

代码语言:javascript
复制
<!-- 配置整合mybatis过程 -->
    <!-- 1.配置数据库相关参数的properties的属性 -->
 	<context:property-placeholder location="classpath:jdbc.properties"/>
 	
 	
 	
 	<!-- 配置数据库连接池 -->
 	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 配置连接池属性 -->
		<property name="driverClass" value="${jdbc.driver}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />

		<!-- c3p0连接池的私有属性 -->
		<property name="maxPoolSize" value="30" />
		<property name="minPoolSize" value="10" />
		<!-- 关闭连接后不自动commit -->
		<property name="autoCommitOnClose" value="false" />
		<!-- 获取连接超时时间 -->
		<property name="checkoutTimeout" value="10000" />
		<!-- 当获取连接失败重试次数 -->
		<property name="acquireRetryAttempts" value="2" />
	</bean>
 	
 	<!-- 3.配置SqlSessionFactory -->
 	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 		<!-- 注入数据库连接池 -->
 		<property name="dataSource" ref="dataSource"/>
 		<!-- 配置mybatis全局配置文件:mybatis-config.xml -->
 		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
 		<!-- 扫描entity -->
 		<property name="typeAliasesPackage" value="com.itwx.o2o.entity"></property>
 		<!-- 扫描SQL配置文件mapper需要的xml文件 -->
 		<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
 	</bean>
 	
 	<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到Spring容器中 -->
 	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 		<!-- 注入sqlSessionFactoy -->
 		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
 		<!-- 扫描的dao层接口包 -->
 		<property name="basePackage" value="com.itwx.o2o.dao"></property>
 	</bean>
 </beans>

重点错误是在配置扫描接口的时候出现错误,加红处配置错误;

代码语言:javascript
复制
如果将 ${jdbc.driverClassName} 改成具体的值就不会报错!
解决方案一:
将
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
改成
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
记住ref要改成value 
原因分析:是因为配置了class="org.mybatis.spring.mapper.MapperScannerConfigurer",而这句代码会在数据源加载前就执行了,之后就把表达式${jdbc.driverClassName}当成字符串执行了。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/05/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档