项目场景:
spring抽取properties文件中的键值,注入到bean中连接数据库
问题描述:
之前是直接写死数据库连接信息,像这样
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="这个是url"/>
<property name="username" value="数据库用户名"/>
然后今天学到了个新技术,直接抽取properties文件中的信息,然后注入到其中,就可以实现解耦合,十分方便,但是按着视频中的步骤我的却不能运行,以下为错误代码
<bean id="dataSource" 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>
然后报了一堆错误,这里就不贴了
原因分析:
经过排查,发现只有username这个property被注入的时候是有问题的,也就是说如果直接用字符串写死是不会报错的,我怀疑是有一些系统命名的关键字无法被抽取的原因。
解决方案:
解决很简单,在properties文件中将这个键名改写下
从原来的username改写为jdbc.username
然后相对应的在xml中改写
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${password}"/>
</bean>
然后就行了