Spring Mvc Mybatis中解决 jdbc dataSource 无法正常赋值问题${}

一、背景说明
       
新搭建了一个项目,框架使用的spring+spring Mvc+Mybatis ,数据库使用的是MySql,项目可正常启动,但是在功能中使用数据库时就出现以下错误信息:

### Error updating database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL '${timer.bin.mysql.url}'
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL '${timer.bin.mysql.url}'
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:76)

二、问题排查
       
首先想到的是Spring 的配置文件没有加载,导致 ${timer.bin.mysql.url} 无法正常赋值导致问题的产生,于是尝试了各种修改web.xml 、spring-mvc配置文件,调整spring 配置文件的加载顺序,始终无法解决问题,详细配置如下所示:


	
	
		
			classpath:timer-test.properties
		
	
	
		UTF-8
	


	
	
	
	
	


	



	
	


	

 

在java代码中直接使用spring的 @Value("${timer.bin.mysql.url}") 给属性赋值,可以正常赋值使用,只有在dataSource 中无法进行正常赋值,始终提示错误 SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL '${timer.bin.mysql.url}'

三、解决方案
问题原因:由于定义 SqlSessionFactoryBean 这个bean时id名称错误的命名为 sqlSessionFactory ,最终导致问题产生
解决方案所示:修改 SqlSessionFactoryBean 这个bean 的id 名称命名为 timerSqlSessionFactory 或任意其他值,解决问题


	


	
	

根本原因:暂未得知,有待考察

你可能感兴趣的:(java,Spring,Mvc,读取配置,mybatis配置无法读取,jdbc加载失败,Spring,加载配置失败)