今天学习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。