Автоконфигурация 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>
где переменные версии зависят от вашей настройки и матрицы, упомянутой выше.