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

Spring 容器已配置 Druid 數據源,@Resource 注入獲取 Connection 為 null 排查

     編輯:程式設計綜合問答

現象

Spring XML 配置了 Druid DataSource Bean,Service 類 @Resource DataSource dataSource,調用 dataSource.getConnection() 返回 null。

排查清單

  1. Setter 方法缺失:@Resource 默認按名稱注入,需提供 setDataSource(DataSource ds) 或字段非 final。
  2. Bean 名稱不匹配:XML <bean id="dataSource" ...>,注入點名稱一致;或用 @Resource(name="dataSource") 顯式指定。
  3. 事務管理器未配置:若用 @Transactional,需 <tx:annotation-driven transaction-manager="txManager"/> 且 txManager 引用同一 DataSource。
  4. Druid 連接池初始化失敗:檢查日誌是否有 create connection error,驗證 URL、用戶名、密碼、驅動類名。
  5. 多數據源場景:需 @Qualifier 或 @Primary 區分。

最小化驗證代碼

@Service
public class TestService {
    @Resource(name = "dataSource")
    private DataSource dataSource; // 提供 setDataSource

    public void test() {
        try (Connection conn = dataSource.getConnection()) {
            System.out.println("Connection: " + conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

總結

先確保 DataSource Bean 能單獨測試拿到連接,再檢查注入方式與事務配置。Druid 本身無特殊用法,遵循標準 javax.sql.DataSource 契約。

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