Автоконфигурация azure-spring-boot-starter-keyvault-secrets SecretClient не работает с Spring-boot 2.7.17

Я установил соединение между Spring-Boot и AKV, и все работает нормально, когда @Bean SecretClient добавлен явно. Я просмотрел различные примеры кода, и для azure-spring-boot-starter-keyvault-secrets это должно работать автоматически, и установка @Bean не требуется.

Это версия Spring-Boot и Spring-Cloud-Azure, которую я использую.

      <spring.boot.version>2.7.17</spring.boot.version>
<spring-cloud-azure.version>4.12.0</spring-cloud-azure.version>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>spring-cloud-azure-dependencies</artifactId>
            <version>${spring-cloud-azure.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-keyvault</artifactId>
</dependency>

и это моя конфигурация application.yml

      spring:
  cloud:
    azure:
      keyvault:
        secret:
          property-sources[0]:
            endpoint: ${ENDPOINT_URL}
            credential:
              client-secret: ${AZURE_CLIENT_SECRET}
              client-id: ${AZURE_CLIENT_ID}
            profile:
              tenant-id: ${AZURE_TENANT_ID}

Если я удалю @Bean из своей конфигурации

      @Bean
public SecretClient secretClient() {
    return new SecretClientBuilder()
            .vaultUrl("akv-url")
            .credential(new DefaultAzureCredentialBuilder().build())
            .buildClient();
}

Я вижу исключение SpringBean:

      Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.azure.security.keyvault.secrets.SecretClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Понятия не имею, в чем проблема, я проверил совместимость версий, они должны быть совместимы. Есть идеи?

1 ответ

для совместимости версий лучше проверить матрицу версий Spring Boot/Spring Cloud и Azure SDK bom.

Матрицу Spring boot/cloud можно найти здесь https://spring.io/projects/spring-cloud.

для Azure Bom https://github.com/Azure/azure-sdk-for-java/wiki/Spring-Versions-Mapping

у вас должен получиться аналогичный фрагмент кода в вашемpom.xmlфайл:

      <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>${azure-bom.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

где переменные версии зависят от вашей настройки и матрицы, упомянутой выше.

Другие вопросы по тегам