首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 查詢異常:配置文件中直接寫死帳號密碼而非表達式讀取

     編輯:程式設計綜合問答

MyBatis/Spring 配置數據源時,若在 XML 中直接硬編碼 <property name="password" value="123456"/> 而非用佔位符 ${jdbc.password},會導致屬性解析異常,表現為查詢時報錯、無法讀取外部屬性文件。

錯誤配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="username" value="root"/>
    <property name="password" value="123456"/> <!-- 硬編碼,非表達式 -->
    <property name="url" value="jdbc:mysql://localhost:3306/db"/>
</bean>

正確配置

<context:property-placeholder location="classpath:jdbc.properties"/>

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="url" value="${jdbc.url}"/>
</bean>

jdbc.properties

jdbc.username=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8

排查步驟

  1. 檢查 PropertyPlaceholderConfigurer 是否正確加載 properties 文件。
  2. 確認屬性鍵名一致(jdbc.password vs jdbc.pwd)。
  3. 查看啟動日志是否有 Could not resolve placeholder 警告。
  4. 臨時在代碼中 System.getProperty("jdbc.password") 驗證屬性是否進入 JVM。

外部化配置是十二要素應用核心,切忌硬編碼敏感信息。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved