当前位置: 首页 > 知识库问答 >
问题:

使用ActiveDirectoryMSI、MSSQL和SQLServerDataSource时未能配置数据源:“url”

印晋
2023-03-14

我有一个使用MSSQL的Springboot应用程序,我正在Azure上部署它。它使用ActiveDirectoryMSI进行身份验证。数据源配置类如下所示

@Configuration
@Slf4j
public class DataSourceConfig {

    @Value("${sql.databaseName}")
    private String sqlDbName;

    @Value("${sql.serverName}")
    private String sqlServer;

    @Value("${sql.msiClientId}")
    private String sqlIdentity;

    @Bean
    public void connectToDb() {

        SQLServerDataSource ds = new SQLServerDataSource();
        ds.setServerName(sqlServer + ".database.windows.net");
        ds.setDatabaseName(sqlDbName);
        ds.setMSIClientId(sqlIdentity);
        ds.setAuthentication("ActiveDirectoryMSI");

        try (Connection connection = ds.getConnection()) {
            log.info("Connected to database using my MSI");
        } catch (SQLServerException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

这些变量的所有值都存储在KeyVault中。问题是构建后,当我尝试部署应用程序时,它需要application.yml中的url,而我没有,因为所有信息都应该来自Azure上的Keyvault。所以它给我以下错误。我不能给它一个url,因为这种MSI方式不需要url

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
        If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
        If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

这是我的pom。xml。我没有放任何与Spring有关的东西。应用程序中的数据源。yml公司

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.8</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit-jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-engine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
    </dependencies>

你知道我该怎么纠正这个问题吗?谢谢

共有1个答案

夏侯华彩
2023-03-14

找到了答案。不得不将h2依赖的范围从测试更改为运行时

 类似资料:
  • 我正在使用MongoDB开发一个Spring Boot批处理示例,并且我已经启动了服务器。 当我启动我的应用程序时,我得到下面的错误。 对这个问题有什么建议吗? 应用特性: pom.xml 我用以下输出启动了:

  • 我已经检查了所有类似的问题,每个答案都说我需要指定一个driverClassName,我已经这样做了。这是我的申请表。yml: 我错过了什么吗?奇怪的是,我的一个有相同代码的同学可以很好地启动应用程序。这就是为什么我认为这与路径有关。也许Spring没有访问yml文件。我把它包含在src.main.resources中,这是Spring查找它的默认位置。这是堆栈跟踪: 这是Gradle构建,我被要

  • 我刚开始使用springboot,我一直在尝试用它和spring security来配置一个项目,但不幸的是,我无法运行它。我得到了下一个错误: 嵌套的异常是org。springframework。靴子自动配置。jdbc。DataSourceProperties$DataSourceBeanCreationException:未能确定合适的驱动程序类 应用程序无法启动 描述: 配置DataSour

  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我的application.properties是: 当我进行maven Build并尝试运行主SpringBoot类时,我收到以下消息:

  • 我的项目昨天运行得很好,但今天我运行它时它突然报告了一个错误。 2019-06-04 19:09:57.206信息18231---[restartedMain]条件评估报告日志监听器: 启动应用程序上下文时出错。要显示条件报告,请在启用调试的情况下重新运行应用程序。2019-06-04 19:09:57.207ERROR 18231 --- [ restartedMain]o. s. b. d.

  • 问题内容: 我是Spring和Spring Boot的新手。如何配置和使用两个数据源? 例如,这是我对第一个数据源的需求: 应用类别 如何修改以添加另一个数据源?如何将其自动布线以供其他存储库使用? 问题答案: