自動設定 Azure SDK 用戶端

Spring Boot 可簡化 Spring Cloud Azure 開發體驗。 Spring Cloud Azure 入門版是一組方便的相依性描述元,可包含在您的應用程式中。 起始程式負責物件實例化和配置邏輯,所以你不必自己操作。 每個入門套件都依賴 spring-cloud-azure-starter 提供關鍵的組態資訊,例如 Azure 雲端環境和驗證資訊。 您可以將這些設定為 YAML 檔案中的屬性,如下列範例所示:

spring:
  cloud:
    azure:
      profile:
        tenant-id: <tenant>
        cloud-type: Azure
      credential:
        client-id: ${AZURE_CLIENT_ID}

注意

cloud 屬性是選擇性的。

tenant-id 允許的值包括:common、organizations、consumers或租用戶標識碼。 如需這些值的詳細資訊,請參閱 錯誤 AADSTS50020 - 來自身分識別提供者的使用者帳戶不存在於租用戶中中的 使用了錯誤的端點(個人和組織帳戶)一節。 如需有關將單一租用戶應用程式轉換為多租用戶的資訊,請參閱 在 Microsoft Entra ID 上將單一租用戶應用程式轉換為多租用戶。

這些屬性是選擇性的。 如果你沒指定,Spring Boot 會自動幫你找到。 如需 Spring Boot 如何尋找這些屬性的詳細資訊,請參閱檔。

相依性設定

你可以用兩種方式使用 Spring Cloud Azure 的啟動程式。 第一種方式是使用具有 spring-cloud-azure-starter 相依性的 Azure SDK,如以下範例所示:

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

第二種方法是避免新增 Azure SDK 相依,而是直接為每個服務加入 Spring Cloud Azure Starter。 例如,使用 Azure Cosmos DB,你會新增以下相依關係:

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

提示

如需支援的入門清單,請參閱 Spring Cloud Azure 開發人員指南的 入門相依性 一節。

配置

注意

如果你使用安全主體來驗證並授權 Microsoft Entra ID 存取 Azure 資源,請確保安全主體擁有足夠的權限來存取該 Azure 資源。 如需詳細資訊,請參閱 使用 Microsoft Entra ID授權存取權。

每個 Azure 服務的組態屬性都位於前綴 spring.cloud.azure.<azure-service> 之下。

提示

如需所有 Spring Cloud Azure 組態屬性的清單,請參閱 Spring Cloud Azure 組態屬性。

基本用法

將以下屬性加入你的 application.yaml 檔案,以自動配置 Azure Cosmos DB 客戶端。

spring:
  cloud:
    azure:
      cosmos:
        database: ${AZURE_COSMOS_DATABASE_NAME}
        endpoint: ${AZURE_COSMOS_ENDPOINT}
        consistency-level: eventual
        connection-mode: direct

接著,這兩個 CosmosClient 和 CosmosAsyncClient 都可在上下文中使用,你可以自動接線,如下範例所示:

class Demo {
@Autowired
private CosmosClient cosmosClient;

    @Override
    public void run() {
        User item = User.randomUser();
        CosmosContainer container = cosmosClient.getDatabase(databaseName).getContainer(containerName);
        container.createItem(item);
    }
}

樣品

請參見 GitHub 上的 azure-spring-boot-samples 倉庫。