天天看點

spring連接配接資料庫時username錯誤項目場景:問題描述:原因分析:解決方案:

項目場景:

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>
           

然後就行了