带有 Spring Boot 2.5.x 的 Azure AppConfiguration

Azure AppConfiguration with Spring Boot 2.5.x

问题

如何将 Azure AppConfigurationSpringBoot 2.5.x 或更高版本集成?


信息

我正在尝试将 Azure AppConfiguration 资源用于 Spring Boot 2.5.4 项目。不幸的是,据我所知,我无法让它从 AppConfiguration 读取设置,甚至无法连接到它。

项目是新创建的 Spring Initializr 我只添加了

之后我尝试关注 Microsoft Quickstart documentation 但没有成功。该文档提到它使用 Spring 2.4.x 所以我假设一些更改破坏了它。

我还尝试通过查看一些 Azure Spring Boot Code Samples.

来确定问题

到目前为止所有示例都使用 bootstrap.properties 文件,我在搜索过程中了解到该文件目前已被弃用。将设置移动到 application.yml 或启用 use-legacy-processing: true 也不起作用。有什么想法吗?

pom.xml

...
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
...
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</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-websocket</artifactId>
        </dependency>

        <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>azure-spring-cloud-appconfiguration-config</artifactId>
            <version>2.0.0</version>
        </dependency>
...

application.yml

spring:
  config:
    use-legacy-processing: true
  profiles:
    active: "develop"
  application:
    name: "MySampleService"
  cloud:
    azure:
      appconfiguration:
        stores:
          - connection-string: "SomeAzureAppConfigurationResourceConnectionString"
            label: ${spring.profiles.active}
#mysampleservice:
#  message: "this is a message from file"

AppConfiguration 资源 我不完全确定设置名称的格式。我尝试基于 this documentation.

构建格式

配置 类 应该没问题,因为在 mysampleservice 中注释会导致使用消息蜂鸣值。

如有任何提示,我们将不胜感激!

更多信息以详细说明已接受的答案

答案中链接的文档指的是两个不同的包。在 maven 存储库的开头链接的是 spring-cloud-azure-appconfiguration-config,而在后面使用的是 azure-spring-cloud-appconfiguration-config。第二个使用 bootstrap.properties 文件。

工作 pom.xmlbootstrap.properties:

...
    <dependencies>
<!--        Dependency to load configuration from azure app configuration resource. Note that additional settings are required in bootstrap.properties
            Documentation of settings: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/appconfiguration/azure-spring-cloud-starter-appconfiguration-config
-->
        <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>azure-spring-cloud-appconfiguration-config-web</artifactId>
            <version>2.1.0</version>
        </dependency>
...

# Use this to enable or disable the cloud config, disabling it results in application.yaml beeing used.
spring.cloud.azure.appconfiguration.enabled=true

# Connection string to azure app configuration resource
spring.cloud.azure.appconfiguration.stores[0].connection-string= Endpoint=https://myofficeconfiguration.azconfig.io;Id=zUcT-l9-s0:PFYfW7WM0/Pz7WZOnH3v;Secret=JTB9myJqGekDAJ5m8Z1vjmkJZrPd88JbOEE3EqoqJYs=

# Configured filters for settings in the previous defined app configuration resource
spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter = /mysampleservice/
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter = Sample
spring.cloud.azure.appconfiguration.stores[0].selects[1].key-filter = /notificationservice/
spring.cloud.azure.appconfiguration.stores[0].selects[1].label-filter = Sample2

bootstrap.yml/bootstrap.properties 仍然可以使用,它们不再是基础 Spring 包的一部分。

此外,您想将此文档用于 2.0.0 和更新版本 https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/appconfiguration/azure-spring-cloud-starter-appconfiguration-config