日期:2014-05-17  浏览次数:20836 次

求问个spring配置数据源的错误
整合SSH出现的错误,以前一直很正常,换了myeclipse2013调试时候突然出现这么个 错误。 
  
spring的配置文件中,有关数据源的配置代码如下: 
  
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations" value="classpath:jdbc.properties"/> 
</bean> 
  
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}"/> 
    <property name="url" value="${jdbc.url}"/> 
    <property name="username" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
</bean> 
  
  
jdbc.properties的代码如下: 
  
jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/test 
jdbc.username=root 
jdbc.password=password  
  
报错如下: 
  
ERROR: HHH000319: Could not get database metadata 
Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES)) 
  
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 
..............
 
  
  
我仔细检查了数据库的用户名密码等等,均无错。。。 
于是试着更改配置方式,放弃jdbc.properties 直接在spring配置文件中写数据库 
信息,如下: 
  
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://localhost:3306/test"/> 
     <property name="username" value="root"/> 
     <property name="password" value="password"/> 
</bean> 
  
结果这样运行正确,无错误。 
  
我初步判断是spring配置文件无法读取jdbc.properties文件???spring配置文 
件和jdbc.properties我都放在了项目的src目录下,也就是编译后位于类路径下的 
。 
  
求教大侠,哪里出现了错误导致spring配置文件不能读取jdbc.properties呢?拜谢 
!!!
------解决方案--------------------
<context:property-placeholder location=“jdbc.properties”/> 
应该这样写吧!我是这样写的!就可以搜寻到配置文件!
------解决方案--------------------
属性错了

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations" value="classpath:jdbc.properties"/> 
</bean>
改成下面的试试:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations">
     <list>
        <value>classpath:jdbc.properties</value>
     </list>
  </property> 
</bean>