问题描述:spring中引入的jdbc.properties文件不能被正常引入到数据源里,而直接写的话没有问题。怎么解决?谢谢大家。
如果是这样:测试正确
<!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <property name="username" value="root"/> <property name="password" value="123"/> </bean>
如果是这样:测试报错信息(Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'phoebe'@'localhost' (using password: YES)))
<!-- 引入jdbc文件 --> <context:property-placeholder location="jdbc.properties"/> <!-- 数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </bean>
这是jdbc.properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=123
jdbc.properties 是资源文件。资源文件的作为spring的一种resource不同的上下文,加载的方式不同。ApplicationContext的建议放在项目的classpath下。同时明确引用,减少歧义。所以你要做以下两点:
1,jdbc.properties 的路径是不是在classpath下。
2,<context:property-placeholder location="classpath:jdbc.properties"/>
按照我的建议操作了没,兄弟?
@David5201: 谢谢你的解答,试过了,这样还是不行。
代码:
<!-- 引入jdbc文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
@不要害怕,一起走: 你把ApplicationContext初始化上下文的代码贴出来吗。。
xmlns:context="http://www.springframework.org/schema/context 这个xmlns有引用吗?spring是哪个版本的啊?我的一点问题都没有。
@David5201: 我用另一台电脑也没问题,确实反复测试过了。怀疑是软件配置问题。