You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Quarkus连接本地MSSQL数据库的依赖注入错误

解决Quarkus连接MSSQL的依赖注入与连接问题

核心问题分析

你遇到的jakarta.enterprise.inject.UnsatisfiedResolutionException,根源是注入了**io.agroal.pool.DataSource**类型,但Quarkus默认不提供该类型的CDI Bean,它暴露的标准JDBC数据源类型是jakarta.sql.DataSource。

修复步骤

1. 修正数据源注入类型

将代码中的io.agroal.pool.DataSource替换为Jakarta EE标准的jakarta.sql.DataSource,Quarkus会自动注入配置好的数据源实例:

修改后的端点代码:

package org.acme;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import jakarta.sql.DataSource;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import java.sql.ResultSet;

@Path("/hello")
public class GreetingResource {

    private final DataSource dataSource;

    @Inject
    public GreetingResource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> hello() {
        List<String> results = new ArrayList<>();
        String query = "SELECT nazwa FROM dbo.Table_2";
        try (Connection conn = dataSource.getConnection();
             PreparedStatement stmt = conn.prepareStatement(query);
             ResultSet rs = stmt.executeQuery()) {
            
            while (rs.next()) {
                results.add(rs.getString("nazwa"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return results;
    }
}

2. 优化数据库连接配置

针对本地MSSQL无密码的Windows身份验证场景,调整配置项:

  • 添加integratedSecurity=true到JDBC URL,启用Windows身份验证
  • 空密码可直接省略quarkus.datasource.password配置

修改后的application.properties:

quarkus.datasource.db-kind=mssql
quarkus.datasource.username=Mmm\\filip
quarkus.datasource.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=Test;integratedSecurity=true

3. 验证依赖完整性

确保已正确安装Quarkus MSSQL扩展,该扩展会自动包含Agroal连接池依赖:

quarkus extension add quarkus-jdbc-mssql

额外排查点

  • 确认本地MSSQL服务正在运行,端口1433对外开放
  • 检查SSMS中Test数据库权限,确保Mmm\filip账号拥有Table_2的查询权限
  • 若使用Windows身份验证,需保证运行Quarkus的进程以Mmm\filip账号启动

内容的提问来源于stack exchange,提问作者Dexu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:33:19