Spring XML 配置了 Druid DataSource Bean,Service 類 @Resource DataSource dataSource,調用 dataSource.getConnection() 返回 null。
@Resource 默認按名稱注入,需提供 setDataSource(DataSource ds) 或字段非 final。<bean id="dataSource" ...>,注入點名稱一致;或用 @Resource(name="dataSource") 顯式指定。@Transactional,需 <tx:annotation-driven transaction-manager="txManager"/> 且 txManager 引用同一 DataSource。create connection error,驗證 URL、用戶名、密碼、驅動類名。@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 契約。