今天学习Spring配置Druid数据源,通过读取jdbc.properties文件来配置数据库连接参数,代码如下
<!--通过加载jdbc.properties配置文件获得连接信息-->
<!--1.加载jdbc.properties配置文件到Spring容器中-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--2.读取jdbc.properties,value的值填写配置文件中的键,通过键获取值-->
<bean id="dataSourceByProperties" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
但在测试能否获取数据库连接对象时,却抛出用户名或密码错误的异常

经过调试后发现,数据源对象中封装的用户名是我操作系统的用户名,并不是jdbc.properties配置的用户名

经过上网查询资料,发现这是因为Spring默认会优先加载系统环境变量,此时获取到的username的值实际上指的是当前计算机的用户名,而不是properties配置文件中指定的username的值。
解决方法:
1.修改配置文件中key的值,避免与系统当前用户的username冲突,而且由于读取properties文件不区分大小写,因此修改为userName也是不可以的,需要修改为user_name。



