Spring踩坑:Spring配置文件中读取${username}为系统当前用户名的问题

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

AnonyEast

一个爱折腾的技术萌新

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐