이 가이드는 레거시 Azure Spring 라이브러리에서 Spring Cloud Azure 4.0으로 마이그레이션하는 데 도움이 됩니다.
소개
그룹 ID 및 아티팩트 ID가 com.azure.spring:spring-cloud-azure-* 라이브러리와 패턴 , com.azure.spring:azure-spring-boot-*또는 com.azure.spring:azure-spring-cloud-* 라이브러리를 com.azure.spring:azure-spring-integration-* 패턴을 따르는 라이브러리를 호출합니다.
이 가이드에서는 최신 라이브러리와 레거시 라이브러리 간의 유사한 구성에 대해 나란히 비교하는 데 중점을 줍니다.
com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-* 또는 com.azure.spring:azure-spring-integration-* 패키지에 대해 잘 알고 있다고 가정합니다.
Spring Cloud Azure 4.0 라이브러리를 접하는 경우 이 가이드 대신 Spring Cloud Azure 개발자 가이드를 참조하세요.
마이그레이션 혜택
새 버전 또는 라이브러리를 채택할지 여부를 고려할 때 묻는 자연스러운 질문은 그 이점입니다. Azure 더 다양한 개발자 그룹이 성숙하고 수용함에 따라 개발자 생산성을 가장 잘 지원하고 Spring Cloud Azure 라이브러리의 격차를 이해하기 위한 패턴과 사례를 배우는 데 중점을 두어 왔습니다.
Spring Cloud Azure 라이브러리 전반에 걸쳐 일관된 피드백이 표현된 몇 가지 영역이 있었습니다. 가장 중요한 것은 다른 Azure 서비스에 대한 라이브러리가 전체 구성 집합을 사용하도록 설정하지 않았다는 것입니다. 또한 프로젝트 명명, 아티팩트 ID, 버전 및 구성의 불일치로 인해 학습 곡선이 가파르게 증가했습니다.
Spring Cloud Azure 라이브러리의 개발 환경을 개선하기 위해 Spring Cloud Azure 라이브러리가 Spring 에코시스템과 관련하여 자연스럽고 공생적인 느낌을 갖도록 하기 위한 일련의 디자인 지침이 도입되었습니다. 자세한 내용은 디사인 문서 참조하세요.
Spring Cloud Azure 4.0은 다양한 Spring 프로젝트(예: Spring Boot, Spring Integration, Spring Cloud Stream 등)와 통합된 라이브러리 간에 공유 환경을 제공합니다. 공유 환경에는 다음이 포함됩니다.
- 모든 Spring Cloud Azure 4.0 라이브러리를 포함하는 통합 BOM입니다.
- 아티팩트에서 일관된 명명 규칙입니다.
- 자격 증명, 프록시, 다시 시도, 클라우드 환경 및 전송 계층 설정을 구성하는 통합된 방법입니다.
- Azure Service 또는 Azure Service SDK에서 지원하는 모든 인증 방법을 지원합니다.
개요
이 마이그레이션 가이드는 다음 섹션으로 구성됩니다.
- Spring Cloud Azure 4.0의 이름 변경 내용
- 아티팩트 변경 내용: 이름 바꾸기/추가/삭제됨
- 종속성 변경
- 인증 변경 내용
- 구성 속성
- API 호환성이 손상되는 변경
- 라이브러리 변경 내용
이름 변경 내용
모든 Spring Cloud Azure 라이브러리를 호출하는 일관되거나 공식적인 이름은 없었습니다. 그들 중 일부는 Azure Spring Boot 호출되었고 그 중 일부는 Spring on Azure. 4.0부터 프로젝트 이름 Spring Cloud Azure 사용하여 모든 Azure Spring 라이브러리를 나타내기 시작했습니다.
증권 시세 표시기
우리는 라이브러리에 대한 두 개의 BOM, azure-spring-boot-bom 및 azure-spring-cloud-dependencies배송하는 데 사용했지만, 이 두 BOM을 4.0 이후 하나의 BOM으로 결합하여 spring-cloud-azure-dependencies. 종속성 관리를 활용하려면 프로젝트의 dependencyManagement 섹션에 항목을 추가합니다.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>7.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
메모
Spring Boot 4.0.x를 사용 중이라면, spring-cloud-azure-dependencies 버전을 7.3.0로 설정해야 합니다.
Spring Boot 3.5.x를 사용하는 경우, spring-cloud-azure-dependencies 버전을 6.4.0로 설정해야 합니다.
Spring Boot 3.1.x-3.5.x를 사용하는 경우 버전을 .로 설정 spring-cloud-azure-dependencies 해야 합니다 5.25.0.
Spring Boot 2.x를 사용하는 경우 spring-cloud-azure-dependencies 버전을 4.20.0로 설정해야 합니다.
이 BOM(자재 명세서)을 <dependencyManagement> 섹션의 pom.xml 파일에서 구성해야 합니다. 이렇게 하면 모든 Spring Cloud Azure 종속성이 동일한 버전을 사용하게 됩니다.
이 BOM에 사용되는 버전에 대한 자세한 내용은 스프링 클라우드 Azure 사용해야 하는 경우 참조하세요.
아티팩트 변경 내용: 이름 바꾸기/추가/삭제됨
그룹 ID는 최신 및 레거시 Spring Cloud Azure 라이브러리와 동일합니다. 그들은 모두 com.azure.spring. 최신 Spring Cloud Azure 라이브러리의 아티팩트 ID가 변경되었습니다. Spring Boot, Spring Integration 또는 Spring Cloud Stream에 속하는 Spring 프로젝트에 따라 아티팩트 ID 패턴은 spring-cloud-azure-starter-[service], spring-integration-azure-[service]또는 spring-cloud-azure-stream-binder-[service]수 있습니다. 각각에 대한 레거시 시작에는 패턴 azure-spring-*따르는 아티팩트 ID가 있습니다. 이를 통해 최신 스타터 또는 레거시 스타터를 사용하는지 여부를 한눈에 이해할 수 있는 빠르고 접근성 있는 수단을 제공합니다.
Spring Cloud Azure 4.0을 개발하는 과정에서 새로운 명명 규칙을 따르도록 일부 아티팩트 이름을 변경하고, 기능을 보다 적절한 아티팩트로 삽입할 수 있도록 일부 아티팩트를 삭제하고, 일부 시나리오를 보다 효율적으로 처리하기 위해 몇 가지 새로운 아티팩트를 추가했습니다.
다음 표에서는 레거시 아티팩트 ID와 최신 아티팩트 ID 간의 매핑을 보여 줍니다.
| 레거시 아티팩트 ID | 최신 아티팩트 ID | 묘사 |
|---|---|---|
azure-spring-boot-starter |
spring-cloud-azure-starter |
이 아티팩트는 모든 기능을 새 spring-cloud-azure-starter 아티팩트로 병합하여 삭제되었습니다. |
azure-spring-boot-starter-active-directory |
spring-cloud-azure-starter-active-directory |
아티팩트 이름을 변경했습니다. |
azure-spring-boot-starter-active-directory-b2c |
spring-cloud-azure-starter-active-directory-b2c |
아티팩트 이름을 변경했습니다. |
azure-spring-boot-starter-cosmos |
spring-cloud-azure-starter-data-cosmos |
Spring Data Azure Cosmos DB 사용함을 나타내는 data 추가하도록 아티팩트 이름을 변경했습니다. |
azure-spring-boot-starter-keyvault-certificates |
해당 없음 | 이 릴리스에는 포함되지 않지만 이후 버전에서 지원됩니다. |
azure-spring-boot-starter-keyvault-secrets |
spring-cloud-azure-starter-keyvault-secrets |
아티팩트 이름을 변경했습니다. |
azure-spring-boot-starter-servicebus-jms |
spring-cloud-azure-starter-servicebus-jms |
아티팩트 이름을 변경했습니다. |
azure-spring-boot-starter-storage |
spring-cloud-azure-starter-storage-blob spring-cloud-azure-starter-storage-file-share |
레거시 아티팩트에는 스토리지 Blob 및 파일 공유의 기능이 모두 포함되어 있으며, 4.0 spring-cloud-azure-starter-storage-blob 에서 두 개의 개별 아티팩트로 접합되었습니다 spring-cloud-azure-starter-storage-file-share. |
azure-spring-boot |
해당 없음 | 이 아티팩트는 모든 기능을 새 spring-cloud-azure-autoconfigure 아티팩트로 병합하여 삭제되었습니다. |
azure-spring-cloud-autoconfigure |
해당 없음 | 이 아티팩트는 모든 기능을 새 spring-cloud-azure-autoconfigure 아티팩트로 병합하여 삭제되었습니다. |
azure-spring-cloud-context |
해당 없음 | 이 아티팩트는 모든 기능이 새 spring-cloud-azure-autoconfigure 병합되고 아티팩트가 spring-cloud-azure-resourcemanager 삭제되었습니다. |
azure-spring-cloud-messaging |
spring-messaging-azure |
메시징 수신기 주석이 삭제되었습니다. |
azure-spring-cloud-starter-cache |
해당 없음 | 이 아티팩트는 redis를 사용하기 위해 삭제되었으며, 추가spring-boot-starter-data-redis, spring-boot-starter-cache및 spring-cloud-azure-resourcemanagerspring-cloud-azure-starter. 사용에 대한 자세한 내용은 Spring Cloud Azure Redis 지원 참조하세요. |
azure-spring-cloud-starter-eventhubs-kafka |
해당 없음 | 이 아티팩트가 삭제되었습니다. kafka를 사용하기 위해 spring kafka를 spring-cloud-azure-resourcemanagerspring-cloud-azure-starter추가하고 . 사용에 대한 자세한 내용은 Spring Cloud Azure Kafka 지원 참조하세요. |
azure-spring-cloud-starter-eventhubs |
spring-cloud-azure-starter-integration-eventhubs |
Event Hubs와 Spring Integration을 사용함을 나타내는 integration추가하도록 아티팩트 이름을 변경했습니다. |
azure-spring-cloud-starter-servicebus |
spring-cloud-azure-starter-integration-servicebus |
Service Bus Spring Integration을 사용함을 나타내는 integration 추가하도록 아티팩트 이름을 변경했습니다. |
azure-spring-cloud-starter-storage-queue |
spring-cloud-azure-starter-integration-storage-queue |
스토리지 큐와 Spring Integration을 사용함을 나타내는 integration추가하도록 아티팩트 이름을 변경했습니다. |
azure-spring-cloud-storage |
해당 없음 | 이 아티팩트는 모든 기능이 새 spring-cloud-azure-autoconfigure 아티팩트로 병합되어 삭제되었습니다. |
azure-spring-cloud-stream-binder-eventhubs |
spring-cloud-azure-stream-binder-eventhubs |
이 아티팩트는 주로 spring-cloud-azure-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs-core새 디자인을 사용하여 리팩터링되었습니다. |
azure-spring-cloud-stream-binder-service-core |
spring-cloud-azure-stream-binder-servicebus-core |
아티팩트 이름을 변경했습니다. |
azure-spring-cloud-stream-binder-servicebus-queue |
spring-cloud-azure-stream-binder-servicebus |
이 아티팩트는 모든 기능을 spring-cloud-azure-stream-binder-servicebus 아티팩트로 병합하여 삭제되었습니다. |
azure-spring-cloud-stream-binder-servicebus-topic |
spring-cloud-azure-stream-binder-servicebus |
이 아티팩트는 모든 기능을 spring-cloud-azure-stream-binder-servicebus 아티팩트로 병합하여 삭제되었습니다. |
azure-spring-integration-core |
spring-integration-azure-core |
아티팩트 이름을 변경했습니다. |
azure-spring-integration-eventhubs |
spring-integration-azure-eventhubs |
아티팩트 이름을 바꿉니다. |
azure-spring-integration-servicebus |
spring-integration-azure-servicebus |
아티팩트 이름을 바꿉니다. |
azure-spring-integration-storage-queue |
spring-integration-azure-storage-queue |
아티팩트 이름을 바꿉니다. |
| 해당 없음 | spring-cloud-azure-actuator |
새로 추가된 Spring Cloud Azure Actuator 아티팩트입니다. |
| 해당 없음 | spring-cloud-azure-actuator-autoconfigure |
actuator에 대한 자동 구성을 포함하여 새로 추가된 Spring Cloud Azure Actuator AutoConfigure 아티팩트입니다. |
| 해당 없음 | spring-cloud-azure-autoconfigure |
SDK 클라이언트에 대한 모든 자동 구성, Spring Security 지원, Spring Data 지원 및 Spring Integration 지원을 포함하여 새로 추가된 Spring Cloud Azure AutoConfigure 아티팩트입니다. |
| 해당 없음 | spring-cloud-azure-core |
모든 핵심 기능을 포함하여 새로 추가된 Spring Cloud Azure Core 아티팩트입니다. |
| 해당 없음 | spring-cloud-azure-resourcemanager |
새로 추가된 Resource Manager 아티팩트입니다. Azure Resource Manager 사용하여 메타데이터를 읽고 리소스를 만드는 핵심 라이브러리입니다. |
| 해당 없음 | spring-cloud-azure-service |
Azure 서비스에 대한 추상화가 포함된 Spring Cloud Azure Service 아티팩트가 새로 추가되었습니다. |
| 해당 없음 | spring-cloud-azure-starter-appconfiguration |
Azure App Configuration SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-cosmos |
Azure Cosmos DB SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-eventhubs |
Azure Event Hubs SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-servicebus |
Azure Service Bus SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-storage-blob |
Azure Storage Blob SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-storage-file-share |
Azure Storage 파일 공유 SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-storage-queue |
Azure Storage Queue SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-stream-eventhubs |
Azure Event Hubs Spring Cloud Stream Binder를 사용하기 위해 새로 추가된 시작입니다. |
| 해당 없음 | spring-cloud-azure-starter-stream-servicebus |
Azure Service Bus Spring Cloud Stream Binder를 사용하기 위해 새로 추가된 시작 |
| 해당 없음 | spring-cloud-azure-stream-binder-eventhubs-core |
Azure Event Hubs 대한 Spring Cloud Stream 핵심 아티팩트가 새로 추가되었습니다. |
종속성 변경
일부 불필요한 종속성이 레거시 아티팩트에서 포함되었으며, 최신 Spring Cloud Azure 4.0 라이브러리에서 제거했습니다. 충돌을 방지하기 위해 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.
종속성이 변경된 라이브러리는 다음과 같습니다.
spring-cloud-azure-starterspring-cloud-azure-starter-active-directoryspring-cloud-azure-starter-active-directory-b2c
인증 변경 내용
Spring Cloud Azure 4.0은 각 Azure Service SDK에서 지원하는 모든 인증 방법을 지원합니다. 전역 토큰 자격 증명을 구성할 뿐만 아니라 각 서비스 수준에서 토큰 자격 증명을 제공할 수 있습니다. 그러나 로컬 개발 환경에 저장된 자격 증명 또는 Azure Services의 관리 ID를 적용할 수 있으므로 Spring Cloud Azure 4.0을 구성하는 데 자격 증명이 필요하지 않습니다. 보안 주체에게 대상 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인합니다.
메모
Azure 메시징 서비스와 상호 작용하기 위해 보안 주체에 역할을 할당하는 경우 메시징 작업을 수행하려면 Data 관련 역할이 필요합니다. Azure Spring Apps Stream Event Hubs/Service Bus 바인더 라이브러리의 경우 리소스를 자동으로 만드는 기능이 필요할 때 Contributor 역할이 필요합니다. 자세한 내용은 Azure 기본 제공 역할 참조하세요.
연결된 자격 증명인 DefaultAzureCredential 콩은 기본적으로 자동으로 구성되며 인증 정보가 더 이상 지정되지 않은 경우 모든 구성 요소에서 사용됩니다. 자세한 내용은 Java
구성 속성
속성 마이그레이션
를 사용할 additional-spring-configuration-metadata.json때 속성 마이그레이션을 원활하게 하기 위해 파일을 만들었습니다spring-boot-properties-migrator. 먼저 애플리케이션에 다음 속성 마이그레이션기를 추가합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
또는 Gradle을 사용하는 경우:
runtime("org.springframework.boot:spring-boot-properties-migrator")
앱을 실행하면 Spring Cloud Azure 더 이상 관리되지 않는 속성을 식별합니다. 대체 항목이 있는 경우 경고와 함께 속성을 일시적으로 다시 매핑합니다. 대체 항목이 없으면 오류 보고서에 자세한 정보가 표시됩니다. 어느 쪽이든 구성을 업데이트한 후 구성을 업데이트하고 종속성을 제거해야 합니다.
계속 진행하기 전에 IDE의 검색 기능을 사용하여 통합 테스트에서 마이그레이션한 속성 중 하나를 사용하지 않는지 다시 확인하는 것이 좋습니다.
메모
이 변경에서 많은 구성 속성을 변경했습니다.
spring-boot-properties-migrator 사용하면 마이그레이션을 원활하게 하는 데 도움이 됩니다.
전역 구성
최신 spring-cloud-azure-starter 사용하면 네임스페이스 spring.cloud.azure 모든 Azure SDK 적용되는 속성을 정의할 수 있습니다. 이 기능은 레거시 azure-spring-boot-starter지원되지 않았습니다. 전역 구성은 다음 표와 같이 다섯 가지 범주로 나눌 수 있습니다.
| 접두사 | 묘사 |
|---|---|
spring.cloud.azure.client |
각 Azure SDK 아래에 전송 클라이언트를 구성합니다. |
spring.cloud.azure.credential |
Microsoft Entra ID 인증하는 방법을 구성합니다. |
spring.cloud.azure.profile |
Azure 클라우드 환경을 구성합니다. |
spring.cloud.azure.proxy |
프록시 옵션을 구성하고 모든 Azure SDK 클라이언트에 적용합니다. |
spring.cloud.azure.retry |
다시 시도 옵션을 구성하고 모든 Azure SDK 클라이언트에 적용합니다. 다시 시도 옵션은 SDK의 일부를 지원하며 spring.cloud.azure.cosmos.retry없습니다. |
구성의 전체 목록은 Spring Cloud Azure 구성 속성 참조하세요.
각 SDK 구성
SDK 수준의 구성 옵션에 대한 자세한 내용은 다음 링크를 사용합니다.
-
다음으로
azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory -
다음으로
azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c -
다음으로
azure-spring-boot-starter-cosmosspring-cloud-azure-starter-data-cosmos -
다음으로
azure-spring-boot-starter-keyvault-secretsspring-cloud-azure-starter-keyvault-secrets -
다음으로
azure-spring-boot-starter-servicebus-jmsspring-cloud-azure-starter-servicebus-jms -
다음으로
azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob -
다음으로
azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share -
다음으로
azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs -
다음으로
azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus -
다음으로
azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue -
다음으로
azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs -
다음으로
azure-spring-cloud-stream-binder-servicebus-*spring-cloud-azure-stream-binder-servicebus
API 호환성이 손상되는 변경
각 라이브러리의 API 호환성이 손상되는 변경에 대한 자세한 내용은 다음 링크를 사용합니다.
-
다음으로
azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory -
다음으로
azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c -
다음으로
azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob -
다음으로
azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share -
다음으로
azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs -
다음으로
azure-spring-integration-eventhubsspring-integration-azure-eventhubs -
다음으로
azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus -
다음으로
azure-spring-integration-servicebusspring-integration-azure-servicebus -
다음으로
azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue -
다음으로
azure-spring-integration-storage-queuespring-integration-azure-storage-queue -
다음으로
azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs -
다음으로
azure-spring-cloud-stream-binder-servicebus-*spring-cloud-azure-stream-binder-servicebus
라이브러리 변경 내용
각 라이브러리의 주요 변경 내용은 다음과 같이 도입됩니다.
azure-spring-boot-starter부터 spring-cloud-azure-starter까지
이 가이드는 버전 3spring-cloud-azure-starter에서 마이그레이션을 azure-spring-boot-starter 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
종속성 변경
일부 불필요한 종속성이 레거시 아티팩트에서 포함되었으며, 최신 Spring Cloud Azure 4.0 라이브러리에서 제거되었습니다. 의도하지 않은 충돌을 방지하려면 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.
다음 표에서는 제거된 종속성을 보여줍니다.
| 종속성 제거됨 | 묘사 |
|---|---|
org.springframework.boot:spring-boot-starter-validation |
최대 절전 모드 유효성 검사기를 사용하려는 경우 유효성 검사 시작자를 포함합니다. |
azure-spring-boot-starter-active-directory부터 spring-cloud-azure-starter-active-directory까지
이 가이드는 버전 3spring-cloud-azure-starter-active-directory에서 마이그레이션을 azure-spring-boot-starter-active-directory 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
종속성 변경
최신 Spring Cloud Azure 4.0 라이브러리 이후 레거시 아티팩트에서 일부 불필요한 종속성이 제거되었습니다. 이러한 제거된 종속성을 프로젝트에 추가하여 의도하지 않은 충돌을 방지합니다.
다음 표에서는 제거된 종속성을 보여줍니다.
| 종속성 제거됨 | 묘사 |
|---|---|
com.fasterxml.jackson.core:jackson-databind |
필요한 경우 프로젝트에 이 종속성을 추가합니다. |
io.projectreactor.netty:reactor-netty |
필요한 경우 프로젝트에 이 종속성을 추가합니다. |
org.springframework.boot:spring-boot-starter-validation |
필요한 경우 프로젝트에 이 종속성을 추가합니다. |
org.springframework.boot:spring-boot-starter-webflux |
필요한 경우 프로젝트에 이 종속성을 추가합니다. |
SDK 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
- 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
- 모든 구성 속성 이름의 접두사는
azure.activedirectoryspring.cloud.azure.active-directory변경되었습니다. - Microsoft Entra 관련 기능을 사용/사용하지 않도록 설정하기 위해 새 속성
spring.cloud.azure.active-directory.enabled추가됩니다. 기본값은false입니다.
다음 표에서는 azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory간의 속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.activedirectory.app-id-uri |
spring.cloud.azure.active-directory.app-id-uri |
azure.activedirectory.application-type |
spring.cloud.azure.active-directory.application-type |
azure.activedirectory.authorization-clients |
spring.cloud.azure.active-directory.authorization-clients |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.on-demand |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.on-demand |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.scopes |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.scopes |
azure.activedirectory.authenticate-additional-parameters |
spring.cloud.azure.active-directory.authenticate-additional-parameters |
azure.activedirectory.base-uri |
spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint |
azure.activedirectory.client-id |
spring.cloud.azure.active-directory.credential.client-id |
azure.activedirectory.client-secret |
spring.cloud.azure.active-directory.credential.client-secret |
azure.activedirectory.graph-membership-uri |
자세한 내용은 다음 표를 확인하세요. |
azure.activedirectory.jwt-connect-timeout |
spring.cloud.azure.active-directory.jwt-connect-timeout |
azure.activedirectory.jwt-read-timeout |
spring.cloud.azure.active-directory.jwt-read-timeout |
azure.activedirectory.jwt-size-limit |
spring.cloud.azure.active-directory.jwt-size-limit |
azure.activedirectory.jwk-set-cache-lifespan |
spring.cloud.azure.active-directory.jwk-set-cache-lifespan |
azure.activedirectory.jwk-set-cache-refresh-time |
spring.cloud.azure.active-directory.jwk-set-cache-refresh-time |
azure.activedirectory.post-logout-redirect-uri |
spring.cloud.azure.active-directory.post-logout-redirect-uri |
azure.activedirectory.session-stateless |
spring.cloud.azure.active-directory.session-stateless |
azure.activedirectory.redirect-uri-template |
spring.cloud.azure.active-directory.redirect-uri-template |
azure.activedirectory.resource-server.claim-to-authority-prefix-map |
spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map |
azure.activedirectory.resource-server.principal-claim-name |
spring.cloud.azure.active-directory.resource-server.principal-claim-name |
azure.activedirectory.tenant-id |
spring.cloud.azure.active-directory.profile.tenant-id |
azure.activedirectory.user-group.allowed-group-ids |
spring.cloud.azure.active-directory.user-group.allowed-group-ids |
azure.activedirectory.user-group.allowed-group-names |
spring.cloud.azure.active-directory.user-group.allowed-group-names |
azure.activedirectory.user-name-attribute |
spring.cloud.azure.active-directory.user-name-attribute |
다음 속성의 값 형식이
longDuration변경됩니다.jwt-connect-timeoutjwt-read-timeoutjwk-set-cache-lifespan-
jwk-set-cache-refresh-time;
다음 속성이 제거됩니다.
azure.activedirectory.allow-telemetryazure.activedirectory.user-group.enable-full-listazure.activedirectory.graph-base-uriazure.activedirectory.graph-membership-uri
다음 속성이 추가됩니다.
spring.cloud.azure.active-directory.enabledspring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpointspring.cloud.azure.active-directory.user-group.use-transitive-members
메모
azure.activedirectory.graph-membership-uri 함수는 spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint 및 spring.cloud.azure.active-directory.user-group.use-transitive-members2개의 속성으로 대체되었습니다. 첫 번째 속성은 호스트 이름을 지정하는 데 사용되며, 두 번째 속성은 URL 경로(v1.0/me/memberOf 또는 v1.0/me/transitiveMemberOf)를 사용하기 위한 플래그입니다.
다음은 마이그레이션의 몇 가지 예입니다.
예제 1. 사례 1
레거시의 경우: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf
최신의 경우:
spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/+spring.cloud.azure.active-directory.user-group.use-transitive-members=false
예제 2. 사례 2
레거시의 경우: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf
최신의 경우:
spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/+spring.cloud.azure.active-directory.user-group.use-transitive-members=true
API 변경 내용
다음 표에서는 azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.aad.webapi.AADJwtBearerTokenAuthenticationConverter |
com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter |
com.azure.spring.aad.webapi.AADResourceServerProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties |
com.azure.spring.aad.webapi.AADResourceServerWebSecurityConfigurerAdapter |
com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter |
com.azure.spring.aad.webapp.AADWebSecurityConfigurerAdapter |
com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter |
com.azure.spring.aad.webapp.AuthorizationClientProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties |
com.azure.spring.aad.AADApplicationType |
com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType |
com.azure.spring.aad.AADAuthorizationGrantType |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationGrantType |
com.azure.spring.aad.AADAuthorizationServerEndpoints |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints |
com.azure.spring.aad.AADClientRegistrationRepository |
com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository |
com.azure.spring.aad.AADTrustedIssuerRepository |
com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository |
com.azure.spring.autoconfigure.aad.AADAppRoleStatelessAuthenticationFilter |
com.azure.spring.cloud.autoconfigure.aad.filter.AadAppRoleStatelessAuthenticationFilter |
com.azure.spring.autoconfigure.aad.AADAuthenticationFilter |
com.azure.spring.cloud.autoconfigure.aad.filter.AadAuthenticationFilter |
com.azure.spring.autoconfigure.aad.AADAuthenticationProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties |
com.azure.spring.autoconfigure.aad.UserPrincipal |
com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal |
com.azure.spring.autoconfigure.aad.UserPrincipalManager |
com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipalManager |
이 섹션에서는 .에서 azure-spring-boot-starter-active-directory제거된 클래스를 나열합니다.
레거시 클래스 제거됨
com.azure.spring.aad.webapp.AADHandleConditionalAccessFiltercom.azure.spring.aad.webapi.validator.AADJwtAudienceValidatorcom.azure.spring.aad.webapi.validator.AADJwtClaimValidator
azure-spring-boot-starter-active-directory-b2c부터 spring-cloud-azure-starter-active-directory-b2c까지
이 가이드는 버전 3spring-cloud-azure-starter-active-directory-b2c에서 마이그레이션을 azure-spring-boot-starter-active-directory-b2c 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
종속성 변경
일부 불필요한 종속성이 레거시 아티팩트에서 포함되었으며, 최신 Spring Cloud Azure 4.0 라이브러리에서 제거되었습니다. 의도하지 않은 충돌을 방지하려면 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.
다음 표에서는 제거된 종속성을 보여줍니다.
| 종속성 제거됨 | 묘사 |
|---|---|
org.springframework.boot:spring-boot-starter-validation |
최대 절전 모드 유효성 검사기를 사용하려는 경우 유효성 검사 시작자를 포함합니다. |
SDK 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
- 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
- 모든 구성 속성 이름이 접두사를
azure.activedirectory.b2cspring.cloud.azure.active-directory.b2c변경했습니다. - 새 속성
spring.cloud.azure.active-directory.b2c.enabledAD B2C 관련 기능을 Azure 사용/비활성화할 수 있도록 추가됩니다. 기본값은 false입니다.
다음 표에서는 azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.activedirectory.b2c.authenticate-additional-parameters |
spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters |
azure.activedirectory.b2c.authorization-clients |
spring.cloud.azure.active-directory.b2c.authorization-clients |
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type |
spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type |
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes |
spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes |
azure.activedirectory.b2c.app-id-uri |
spring.cloud.azure.active-directory.b2c.app-id-uri |
azure.activedirectory.b2c.base-uri |
spring.cloud.azure.active-directory.b2c.base-uri |
azure.activedirectory.b2c.client-id |
spring.cloud.azure.active-directory.b2c.credential.client-id |
azure.activedirectory.b2c.client-secret |
spring.cloud.azure.active-directory.b2c.credential.client-secret |
azure.activedirectory.b2c.jwt-connect-timeout |
spring.cloud.azure.active-directory.b2c.jwt-connect-timeout |
azure.activedirectory.b2c.jwt-read-timeout |
spring.cloud.azure.active-directory.b2c.jwt-read-timeout |
azure.activedirectory.b2c.jwt-size-limit |
spring.cloud.azure.active-directory.b2c.jwt-size-limit |
azure.activedirectory.b2c.login-flow |
spring.cloud.azure.active-directory.b2c.login-flow |
azure.activedirectory.b2c.logout-success-url |
spring.cloud.azure.active-directory.b2c.logout-success-url |
azure.activedirectory.b2c.reply-url |
spring.cloud.azure.active-directory.b2c.reply-url |
azure.activedirectory.b2c.tenant-id |
spring.cloud.azure.active-directory.b2c.profile.tenant-id |
azure.activedirectory.b2c.user-flows |
spring.cloud.azure.active-directory.b2c.user-flows |
azure.activedirectory.b2c.user-name-attribute-name |
spring.cloud.azure.active-directory.b2c.user-name-attribute-name |
다음에서 속성이 제거되었습니다.
azure-spring-boot-starter-active-directory-b2cazure.activedirectory.b2c.allow-telemetryazure.activedirectory.b2c.tenant
다음 속성의 값 형식이
longDuration변경됩니다.jwt-connect-timeoutjwt-read-timeout
API 변경 내용
다음 표에서는 azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.autoconfigure.b2c.AADB2CAuthorizationRequestResolver |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver |
com.azure.spring.autoconfigure.b2c.AADB2CJwtBearerTokenAuthenticationConverter |
com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter |
com.azure.spring.autoconfigure.b2c.AADB2CLogoutSuccessHandler |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler |
com.azure.spring.autoconfigure.b2c.AADB2COidcLoginConfigurer |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2COidcLoginConfigurer |
com.azure.spring.autoconfigure.b2c.AADB2CProperties |
com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties |
com.azure.spring.autoconfigure.b2c.AADB2CTrustedIssuerRepository |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cTrustedIssuerRepository |
com.azure.spring.autoconfigure.b2c.AuthorizationClientProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties |
azure-spring-boot-starter-cosmos부터 spring-cloud-azure-starter-data-cosmos까지
이 가이드는 버전 3spring-cloud-azure-starter-data-cosmos에서 마이그레이션을 azure-spring-boot-starter-cosmos 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.cosmosspring.cloud.azure.cosmos변경했습니다.
다음 표에서는 azure-spring-boot-starter-cosmosspring-cloud-azure-starter-data-cosmos클래스 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.cosmos.connection-mode |
spring.cloud.azure.cosmos.connection-mode |
azure.cosmos.consistency-level |
spring.cloud.azure.cosmos.consistency-level |
azure.cosmos.database |
spring.cloud.azure.cosmos.database |
azure.cosmos.key |
spring.cloud.azure.cosmos.key |
azure.cosmos.populate-query-metrics |
spring.cloud.azure.cosmos.populate-query-metrics |
azure.cosmos.uri |
spring.cloud.azure.cosmos.endpoint |
azure-spring-boot-starter-keyvault-secrets부터 spring-cloud-azure-starter-keyvault-secrets까지
이 가이드는 버전 3spring-cloud-azure-starter-keyvault-secrets에서 마이그레이션을 azure-spring-boot-starter-keyvault-secrets 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
다음 표에서는 azure-spring-boot-starter-keyvault-secretsspring-cloud-azure-starter-keyvault-secrets속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.keyvault.case-sensitive-keys |
spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive |
azure.keyvault.certificate-password |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-password |
azure.keyvault.certificate-path |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-path |
azure.keyvault.client-id |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-id |
azure.keyvault.client-key |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-secret |
azure.keyvault.enabled |
spring.cloud.azure.keyvault.secret.property-source-enabled 및 spring.cloud.azure.keyvault.secret.property-source-enabled |
azure.keyvault.order |
더 이상 지원되지 않습니다. 대신 순서를 property-source[n] 사용합니다. |
azure.keyvault.refresh-interval |
spring.cloud.azure.keyvault.secret.property-source[n].refresh-interval |
azure.keyvault.secret-keys |
spring.cloud.azure.keyvault.secret.property-source[n].secret-keys |
azure.keyvault.tenant-id |
spring.cloud.azure.keyvault.secret.property-source[n].profile.tenant-id |
azure.keyvault.uri |
spring.cloud.azure.keyvault.secret.property-source[n].endpoint |
다음에서 속성이 제거되었습니다.
spring-cloud-azure-starter-keyvault-secretsazure.keyvault.allow-telemetryazure.keyvault.order
다음 사항에 주의해야 합니다.
- 모든 구성 속성 이름이 접두사를
azure.keyvaultspring.cloud.azure.keyvault.secret변경했습니다. -
spring.cloud.azure.keyvault.secret.enabled모든 Key Vault 비밀 기능을 사용하도록 설정하는 데 사용되며, Key Vault 비밀 클라이언트 빈(예:SecretClient및SecretAsyncClient)을 구성하고KeyVaultPropertySourceConfigurableEnvironment추가합니다. -
spring.cloud.azure.keyvault.secret.property-source-enabled모든KeyVaultPropertySource사용하도록 설정하는 데 사용됩니다.spring.cloud.azure.keyvault.secret.enabled=true경우에만 적용됩니다. - Azure 공통 속성(예:
client,proxy,retry,credential,profile) 및 Key Vault 속성(예:endpoint,service-version).spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME구성되지 않은 경우spring.cloud.azure.keyvault.secret.PROPERTY_NAME사용됩니다. -
spring.cloud.azure.keyvault.secret.property-sources[n].resource고유한 Azure 리소스와 관련이 있으므로 구성되지 않은 경우 다른 위치에서 값을 얻지 못합니다.
azure-spring-boot-starter-servicebus-jms부터 spring-cloud-azure-starter-servicebus-jms까지
이 가이드는 버전 3spring-cloud-azure-starter-servicebus-jms에서 마이그레이션을 azure-spring-boot-starter-servicebus-jms 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
가독성을 위해 spring.jms.servicebus.idle-timeout 패턴으로 변경 long 된 구성 유형(밀리초) Duration 입니다.
azure-spring-boot-starter-storage부터 spring-cloud-azure-starter-storage-blob까지
이 가이드는 버전 3spring-cloud-azure-starter-storage-blob에서 마이그레이션을 azure-spring-boot-starter-storage 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.storagespring.cloud.azure.storage.blob변경했습니다.
다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.storage.account-name |
spring.cloud.azure.storage.blob.account-name |
azure.storage.account-key |
spring.cloud.azure.storage.blob.account-key |
azure.storage.blob-endpoint |
spring.cloud.azure.storage.blob.endpoint |
API 변경 내용
다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |
com.azure.spring.core.resource.AzureStorageBlobProtocolResolver |
com.azure.spring.autoconfigure.storage.resource.BlobStorageResource |
com.azure.spring.core.resource.StorageBlobResource |
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver |
com.azure.spring.core.resource.AzureStorageBlobProtocolResolver |
azure-spring-boot-starter-storage부터 spring-cloud-azure-starter-storage-file-share까지
이 가이드는 버전 3spring-cloud-azure-starter-storage-file-share에서 마이그레이션을 azure-spring-boot-starter-storage 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.storagespring.cloud.azure.storage.fileshare변경했습니다.
다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
azure.storage.account-name |
spring.cloud.azure.storage.fileshare.account-name |
azure.storage.account-key |
spring.cloud.azure.storage.fileshare.account-key |
azure.storage.file-endpoint |
spring.cloud.azure.storage.fileshare.endpoint |
API 변경 내용
다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |
com.azure.spring.core.resource.AzureStorageFileProtocolResolver |
com.azure.spring.autoconfigure.storage.resource.FileStorageResource |
com.azure.spring.core.resource.StorageFileResource |
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver |
com.azure.spring.core.resource.AzureStorageFileProtocolResolver |
azure-spring-cloud-starter-eventhubs부터 spring-cloud-azure-starter-integration-eventhubs까지
이 가이드는 버전 2spring-cloud-azure-starter-integration-eventhubs에서 마이그레이션을 azure-spring-cloud-starter-eventhubs 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
구성 접두사를 .로 spring.cloud.azure.eventhubspring.cloud.azure.eventhubs변경했습니다.
이 접두사에 대한 자식 항목에 대한 변경 내용은 다음 표를 참조하세요.
다음 표에서는 azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.eventhubs.resource.resource-group |
spring.cloud.azure.eventhub.namespace |
spring.cloud.azure.eventhubs.namespace |
spring.cloud.azure.eventhub.connection-string |
spring.cloud.azure.eventhubs.connection-string |
spring.cloud.azure.eventhub.checkpoint-storage-account |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
spring.cloud.azure.eventhub.checkpoint-access-key |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
spring.cloud.azure.eventhub.checkpoint-container |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
예를 들어 다음에서 변경합니다.
spring:
cloud:
azure:
eventhub:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}
받는 사람:
spring:
cloud:
azure:
eventhubs:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
processor:
checkpoint-store:
container-name: ${AZURE_STORAGE_CONTAINER_NAME}
account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
메모
Microsoft 사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 좋습니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.
API 변경 내용
- 수신기 주석에 대한 변경 내용은 <<migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> 라이브러리의 마이그레이션 가이드를 참조하세요.
- 구독 함수가 클래스
EventHubOperation이동되고 송신 함수가EventHubsMessageListenerContainer이동한EventHubsTemplate삭제합니다. - Azure Event Hubs 서비스와 일치하도록
EventHubInboundChannelAdapter이름을EventHubsInboundChannelAdapter로 바꿉니다. - 생성자를
EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)변경합니다. -
CheckpointConfig인스턴스화 스타일을 빌드 스타일 대신 단순 생성자로 변경합니다. - API
EventHubOperation#setCheckpointConfig삭제합니다. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드EventHubsContainerProperties#setCheckpointConfig호출할 수 있습니다. - API
EventHubOperation#setBatchConsumerConfig삭제합니다. 인바운드 채널 어댑터에 대한 일괄 처리 사용 구성을 설정하기 위해 사용자는EventHubsContainerProperties#getBatch#setMaxSize두 메서드를 호출하고EventHubsContainerProperties#getBatch#setMaxWaitTime수 있습니다. - 일괄 처리 사용 모드의 경우 일괄 처리된 메시지에서 변환된 메시지 헤더 이름을 변경합니다.
- 메시지 헤더를
azure_eventhub_enqueued_timeazure_eventhubs_batch_converted_enqueued_time변경합니다. - 메시지 헤더를
azure_eventhub_offsetazure_eventhubs_batch_converted_offset변경합니다. - 메시지 헤더를
azure_eventhub_sequence_numberazure_eventhubs_batch_converted_sequence_number변경합니다. - 메시지 헤더를
azure_partition_keyazure_batch_converted_partition_key변경합니다.
- 메시지 헤더를
- Event Hubs에 메시지를 게시하는 경우 일괄 처리된 메시지에서 변환된 모든 메시지 헤더를 무시합니다. 헤더에는 다음이 포함됩니다.
- azure_batch_converted_partition_key
- azure_eventhubs_batch_converted_enqueued_time
- azure_eventhubs_batch_converted_offset
- azure_eventhubs_batch_converted_sequence_number
- azure_eventhubs_batch_converted_system_properties
- azure_eventhubs_batch_converted_application_properties
-
BATCH검사점 모드는 이제 일괄 처리 사용 모드에서만 작동하며, EventHubsInboundChannelAdapter 생성자에ListenerMode.BATCH전달하여 사용하도록 설정할 수 있습니다.
다음 표에서는 azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
com.azure.spring.integration.core.api.CheckpointConfig |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig |
com.azure.spring.integration.core.api.CheckpointMode |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |
com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter |
샘플 코드 조각
EventHubsInboundChannelAdapter샘플 코드:레거시 코드:
public class Demo { @Bean public EventHubInboundChannelAdapter messageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, EventHubOperation eventhubOperation) { eventhubOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode (CheckpointMode.MANUAL).build()); EventHubInboundChannelAdapter adapter = new EventHubInboundChannelAdapter("EVENTHUB_NAME", eventhubOperation, "CONSUMER_GROUP"); adapter.setOutputChannel(inputChannel); return adapter; } }최신 코드:
public class Demo { @Bean public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) { EventHubsContainerProperties containerProperties = new EventHubsContainerProperties(); containerProperties.setEventHubName("EVENTHUB_NAME"); containerProperties.setConsumerGroup("CONSUMER_GROUP"); CheckpointConfig config = new CheckpointConfig(CheckpointMode.MANUAL); containerProperties.setCheckpointConfig(config); return new EventHubsMessageListenerContainer(processorFactory, containerProperties); } @Bean public EventHubsInboundChannelAdapter messageChannelAdapter(@Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, EventHubsMessageListenerContainer listenerContainer) { EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } }DefaultMessageHandler샘플 코드:레거시 코드:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL") public MessageHandler messageSender(EventHubOperation eventhubOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.error("There was an error sending the message.", ex); } }); return handler; } }최신 코드:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL") public MessageHandler messageSender(EventHubsTemplate eventhubOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.error("There was an error sending the message.", ex); } }); return handler; } }
azure-spring-integration-eventhubs부터 spring-integration-azure-eventhubs까지
이 가이드는 버전 2spring-integration-azure-eventhubs에서 마이그레이션을 azure-spring-integration-eventhubs 지원하기 위한 것입니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
API 변경 내용
- 구독 함수가 클래스
EventHubOperation이동되고 송신 함수가EventHubsMessageListenerContainer이동한EventHubsTemplate삭제합니다. - Azure Event Hubs 서비스와 일치하도록
EventHubInboundChannelAdapter이름을EventHubsInboundChannelAdapter로 바꿉니다. - 생성자를
EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)변경합니다. -
CheckpointConfig인스턴스화 스타일을 빌드 스타일 대신 단순 생성자로 변경합니다. - API
EventHubOperation#setCheckpointConfig삭제합니다. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드EventHubsContainerProperties#setCheckpointConfig호출할 수 있습니다. - API
EventHubOperation#setBatchConsumerConfig삭제합니다. 인바운드 채널 어댑터에 대한 일괄 처리 사용 구성을 설정하기 위해 사용자는EventHubsContainerProperties#getBatch#setMaxSize두 메서드를 호출하고EventHubsContainerProperties#getBatch#setMaxWaitTime수 있습니다. - 일괄 처리 사용 모드의 경우 일괄 처리된 메시지에서 변환된 메시지 헤더 이름을 변경합니다.
- 메시지 헤더를
azure_eventhub_enqueued_timeazure_eventhubs_batch_converted_enqueued_time변경합니다. - 메시지 헤더를
azure_eventhub_offsetazure_eventhubs_batch_converted_offset변경합니다. - 메시지 헤더를
azure_eventhub_sequence_numberazure_eventhubs_batch_converted_sequence_number변경합니다. - 메시지 헤더를
azure_partition_keyazure_batch_converted_partition_key변경합니다.
- 메시지 헤더를
- Event Hubs에 메시지를 게시하는 경우 일괄 처리된 메시지에서 변환된 모든 메시지 헤더를 무시합니다. 헤더에는 다음이 포함됩니다.
- azure_batch_converted_partition_key
- azure_eventhubs_batch_converted_enqueued_time
- azure_eventhubs_batch_converted_offset
- azure_eventhubs_batch_converted_sequence_number
- azure_eventhubs_batch_converted_system_properties
- azure_eventhubs_batch_converted_application_properties
-
BATCH검사점 모드는 이제 일괄 처리 사용 모드에서만 작동하며, EventHubsInboundChannelAdapter 생성자에ListenerMode.BATCH전달하여 사용하도록 설정할 수 있습니다.
다음 표에서는 azure-spring-integration-eventhubs spring-integration-azure-eventhubs클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
com.azure.spring.integration.core.api.CheckpointConfig |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig |
com.azure.spring.integration.core.api.CheckpointMode |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |
com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter |
azure-spring-cloud-starter-servicebus부터 spring-cloud-azure-starter-integration-servicebus까지
이 가이드는 버전 2spring-cloud-azure-starter-integration-servicebus에서 마이그레이션을 azure-spring-cloud-starter-servicebus 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
spring-cloud-azure-starter-integration-servicebus지원되는 모든 구성 옵션의 경우 접두사는 spring.cloud.azure.servicebus유지됩니다.
다음 표에서는 azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.servicebus.resource.resource-group |
spring.cloud.azure.servicebus.transport-type |
spring.cloud.azure.servicebus.client.transport-type |
spring.cloud.azure.servicebus.retry-options.retry-mode |
spring.cloud.azure.servicebus.retry.mode |
spring.cloud.azure.servicebus.retry-options.max-retries |
spring.cloud.azure.servicebus.retry.exponential.max-retries또는 spring.cloud.azure.servicebus.retry.fixed.max-retries,에 따라 구성해야 합니다.spring.cloud.azure.servicebus.retry.mode = fixedexponential |
spring.cloud.azure.servicebus.retry-options.delay |
spring.cloud.azure.servicebus.retry.exponential.base-delay또는 spring.cloud.azure.servicebus.retry.fixed.delay,에 따라 구성해야 합니다.spring.cloud.azure.servicebus.retry.mode = fixedexponential |
spring.cloud.azure.servicebus.retry-options.max-delay |
spring.cloud.azure.servicebus.retry.exponential.max-delay |
spring.cloud.azure.servicebus.retry-options.try-timeout |
spring.cloud.azure.servicebus.retry.try-timeout |
API 변경 내용
- 구독 함수가 클래스
ServiceBusQueueOperation이동하고 보내는 함수가ServiceBusTopicOperation이동한ServiceBusMessageListenerContainer삭제하고ServiceBusTemplate. -
ServiceBusQueueInboundChannelAdapter및ServiceBusTopicInboundChannelAdapter삭제하고 Service Bus 큐/토픽 엔터티를 수신 대기하도록 기능을 ServiceBusInboundChannelAdapter로 이동합니다. - 생성자를
ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다. - 생성자를
ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다. - API
ServiceBusQueueOperation#setCheckpointConfig삭제하고ServiceBusTopicOperation#setCheckpointConfig. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드ServiceBusContainerProperties#setAutoComplete대신 호출할 수 있습니다. 자동 완성 모드를 사용하지 않도록 설정하는 것은MANUAL검사점 모드와 동일하며 이를 사용하도록 설정하면RECORD모드가 트리거됩니다. - API
ServiceBusQueueOperatio#setClientConfig삭제하고ServiceBusTopicOperation#setClientConfig. 인바운드 채널 어댑터에서 사용하는 기본ServiceBusProcessorClient구성하기 위해 사용자는 대신ServiceBusContainerProperties사용할 수 있습니다. -
CompletableFutureServiceBusTemplate지원을 삭제하고DefaultMessageHandler대신Reactor지원합니다. -
ServiceBusTemplate#setDefaultEntityType새 API를 추가하여 엔터티 형식을 지정합니다. 이 형식은PropertiesSupplier<String, ProducerProperties>대해ProducerProperties#entityType빈이 제공되지 않는 경우에 필요합니다. - 메시지 헤더
AzureHeaders.RAW_ID삭제합니다.ServiceBusMessageHeaders.MESSAGE_ID를 대신 사용하세요.
다음 표에서는 azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |
com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter |
com.azure.spring.integration.core.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
샘플 코드 조각
ServiceBusInboundChannelAdapter샘플 코드:ServiceBusQueueInboundChannelAdapter또는ServiceBusTopicInboundChannelAdapter사용하는 레거시 코드:public class Demo { @Bean public ServiceBusQueueInboundChannelAdapter queueMessageChannelAdapter( @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusQueueOperation queueOperation) { queueOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); ServiceBusQueueInboundChannelAdapter adapter = new ServiceBusQueueInboundChannelAdapter("QUEUE_NAME", queueOperation); adapter.setOutputChannel(inputChannel); return adapter; } @Bean public ServiceBusTopicInboundChannelAdapter topicMessageChannelAdapter( @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusTopicOperation topicOperation) { topicOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); ServiceBusTopicInboundChannelAdapter adapter = new ServiceBusTopicInboundChannelAdapter("TOPIC_NAME", topicOperation, "SUBSCRIPTION_NAME"); adapter.setOutputChannel(inputChannel); return adapter; } }최신 코드:
public class Demo { @Bean("queue-listener-container") public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) { ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties(); containerProperties.setEntityName("QUEUE_NAME"); containerProperties.setAutoComplete(false); return new ServiceBusMessageListenerContainer(processorFactory, containerProperties); } @Bean public ServiceBusInboundChannelAdapter queueMessageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, @Qualifier("queue-listener-container") ServiceBusMessageListenerContainer listenerContainer) { ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } @Bean("topic-listener-container") public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) { ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties(); containerProperties.setEntityName("TOPIC_NAME"); containerProperties.setSubscriptionName("SUBSCRIPTION_NAME"); containerProperties.setAutoComplete(false); return new ServiceBusMessageListenerContainer(processorFactory, containerProperties); } @Bean public ServiceBusInboundChannelAdapter topicMessageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, @Qualifier("topic-listener-container") ServiceBusMessageListenerContainer listenerContainer) { ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } }DefaultMessageHandler샘플 코드:레거시 코드, 큐를 예로 들면 다음과 같습니다.
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME") public MessageHandler queueMessageSender(ServiceBusQueueOperation queueOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", queueOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.info("There was an error sending the message."); } }); return handler; } }최신 코드:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME") public MessageHandler queueMessageSender(ServiceBusTemplate serviceBusTemplate) { serviceBusTemplate.setDefaultEntityType(ServiceBusEntityType.QUEUE); DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", serviceBusTemplate); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully for {}.", "QUEUE_NAME"); } @Override public void onFailure(Throwable ex) { LOGGER.info("There was an error sending the message."); } }); return handler; } }
azure-spring-integration-servicebus부터 spring-integration-azure-servicebus까지
이 가이드는 버전 2spring-integration-azure-servicebus에서 마이그레이션을 azure-spring-integration-servicebus 지원하기 위한 것입니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
API 변경 내용
- 구독 함수가 클래스
ServiceBusQueueOperation이동하고 보내는 함수가ServiceBusTopicOperation이동한ServiceBusMessageListenerContainer삭제하고ServiceBusTemplate. -
ServiceBusQueueInboundChannelAdapter및ServiceBusTopicInboundChannelAdapter삭제하고 Service Bus 큐/토픽 엔터티를 수신 대기하도록 기능을 ServiceBusInboundChannelAdapter로 이동합니다. - 생성자를
ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다. - 생성자를
ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다. - API
ServiceBusQueueOperation#setCheckpointConfig삭제하고ServiceBusTopicOperation#setCheckpointConfig. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드ServiceBusContainerProperties#setAutoComplete대신 호출할 수 있습니다. 자동 완성 모드를 사용하지 않도록 설정하는 것은MANUAL검사점 모드와 동일하며 이를 사용하도록 설정하면RECORD모드가 트리거됩니다. - API
ServiceBusQueueOperation#setClientConfig삭제하고ServiceBusTopicOperation#setClientConfig. 인바운드 채널 어댑터에서 사용하는 기본ServiceBusProcessorClient구성하기 위해 사용자는 대신ServiceBusContainerProperties사용할 수 있습니다. -
CompletableFutureServiceBusTemplate지원을 삭제하고DefaultMessageHandler대신Reactor지원합니다. -
ServiceBusTemplate#setDefaultEntityType새 API를 추가하여 엔터티 형식을 지정합니다. 이 형식은PropertiesSupplier<String, ProducerProperties>대해ProducerProperties#entityType빈이 제공되지 않는 경우에 필요합니다. - 메시지 헤더
AzureHeaders.RAW_ID삭제합니다.ServiceBusMessageHeaders.MESSAGE_ID를 대신 사용하세요.
다음 표에서는 azure-spring-integration-servicebusspring-integration-azure-servicebus클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |
com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter |
com.azure.spring.integration.core.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
azure-spring-cloud-starter-storage-queue부터 spring-cloud-azure-starter-integration-storage-queue까지
이 가이드는 버전 2spring-cloud-azure-starter-integration-storage-queue에서 마이그레이션을 azure-spring-cloud-starter-storage-queue 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 spring.cloud.azure.storagespring.cloud.azure.storage.queue변경했습니다.
다음 표에서는 azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
spring.cloud.azure.storage.account |
spring.cloud.azure.storage.queue.account-name |
spring.cloud.azure.storage.access-key |
spring.cloud.azure.storage.queue.account-key |
spring.cloud.azure.storage.resource-group |
spring.cloud.azure.storage.queue.resource.resource-group |
API 변경 내용
-
StorageQueueOperation삭제하고 대신StorageQueueTemplate제공합니다. -
checkpoint-modeStorageQueueTemplate구성을 삭제하고MANUAL모드만 지원합니다.
다음 표에서는 azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |
com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.storage.queue.StorageQueueTemplate |
com.azure.spring.storage.queue.core.StorageQueueTemplate |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
azure-spring-integration-storage-queue부터 spring-integration-azure-storage-queue까지
이 가이드는 버전 2spring-integration-azure-storage-queue에서 마이그레이션을 azure-spring-integration-storage-queue 지원하기 위한 것입니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
API 변경 내용
-
StorageQueueOperation삭제하고 대신StorageQueueTemplate제공합니다. -
checkpoint-modeStorageQueueTemplate구성을 삭제하고MANUAL모드만 지원합니다.
다음 표에서는 azure-spring-integration-storage-queuespring-integration-azure-storage-queue클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |
com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.storage.queue.StorageQueueTemplate |
com.azure.spring.storage.queue.core.StorageQueueTemplate |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
azure-spring-cloud-stream-binder-eventhubs부터 spring-cloud-azure-stream-binder-eventhubs까지
이 가이드는 버전 2spring-cloud-azure-stream-binder-eventhubs에서 마이그레이션을 azure-spring-cloud-stream-binder-eventhubs 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
구성 접두사를 .로 spring.cloud.azure.eventhubspring.cloud.azure.eventhubs변경했습니다.
중요하다
바인더 형식의 이름이 eventhubeventhubs.
다음 접두사에 대한 자식 항목의 변경 내용은 다음 표를 참조하세요.
다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.eventhubs.resource.resource-group |
spring.cloud.azure.eventhub.namespace |
spring.cloud.azure.eventhubs.namespace |
spring.cloud.azure.eventhub.connection-string |
spring.cloud.azure.eventhubs.connection-string |
spring.cloud.azure.eventhub.checkpoint-storage-account |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
spring.cloud.azure.eventhub.checkpoint-access-key |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
spring.cloud.azure.eventhub.checkpoint-container |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-batch-size |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-size |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-wait-time |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-wait-time |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.mode |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-count |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.count |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-interval |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.interval |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.start-position |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.initial-partition-event-position |
메모
start-position 구성의 값 형식도 com.azure.spring.integration.core.api.StartPosition 열거형에서 각 파티션에 대한 mapStartPositionProperties 변경됩니다. 따라서 키는 파티션 ID이며 값은 오프셋, 시퀀스 번호, 큐에 포함된 날짜 시간 및 포함 여부의 속성을 포함하는 com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties.
구성 마이그레이션 예제
인증에 연결 문자열 사용하고 위에서 언급한 속성을 마이그레이션하기 위해 구성 변경 내용이 다음과 같이 나열됩니다.
레거시 구성:
spring:
cloud:
azure:
eventhub:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}
stream:
eventhub:
bindings:
<binding-name>:
consumer:
max-batch-size: ${AZURE_MAX_BATCH_SIZE}
max-wait-time: ${AZURE_MAX_WAIT_TIME}
checkpoint-mode: ${AZURE_CHECKPOINT_MODE}
checkpoint-count: ${AZURE_CHECKPOINT_COUNT}
checkpoint-interval: ${AZURE_CHECKPOINT_INTERVAL}
start-position: EARLIEST
최신 구성:
spring:
cloud:
azure:
eventhubs:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
processor:
checkpoint-store:
container-name: ${AZURE_STORAGE_CONTAINER_NAME}
account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
stream:
eventhubs:
bindings:
<binding-name>:
consumer:
batch:
max-size: ${AZURE_MAX_BATCH_SIZE}
max-wait-time: ${AZURE_MAX_WAIT_TIME}
checkpoint:
mode: ${AZURE_CHECKPOINT_MODE}
count: ${AZURE_CHECKPOINT_COUNT}
interval: ${AZURE_CHECKPOINT_INTERVAL}
initial-partition-event-position:
0:
offset: earliest
1:
sequence-number: 100
2:
enqueued-date-time: 2022-01-12T13:32:47.650005Z
4:
inclusive: false
메모
Microsoft 사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 좋습니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.
연결 문자열 대신 보안 주체를 사용하는 경우 4.0 이전 버전에서 애플리케이션은 먼저 제공된 보안 주체를 사용하여 ARM(Azure Resource Manager)에 연결한 다음 ARM을 사용하여 지정된 네임스페이스의 연결 문자열 검색합니다. 결국 애플리케이션은 검색된 연결 문자열 사용하여 Azure Event Hubs 연결합니다. 이러한 방식으로 제공된 보안 주체는 연결된 Azure Event Hubs 네임스페이스를 검색하려면 Contributor 역할을 부여해야 합니다.
Azure Spring Apps 4.0의 경우 인증을 위해 보안 주체를 활용하는 두 가지 방법을 제공합니다. 하나는 여전히 보안 주체를 사용하여 ARM에 연결하고 보안 주체에 Contributor 역할이 필요한 연결 문자열을 검색합니다. 다른 하나는 보안 주체를 활용하여 Microsoft Entra ID 인증한 다음 Azure Event Hubs 직접 연결합니다. 이 경우 Contributor 역할은 더 이상 필요하지 않지만 메시징 작업에는 다른 Data 관련 역할이 필요합니다. 보안 주체에 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인하려면 Microsoft Entra ID을 사용하여 액세스 권한 부여를 참조하세요.
ARM 기반 인증의 경우 서비스 주체를 예로 들어 할당된 역할이 변경되지 않아야 하는 구성 마이그레이션이 다음과 같이 나열됩니다.
레거시 구성:
spring:
cloud:
azure:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
tenant-id: <tenant>
resource-group: ${EVENTHUB_RESOURCE_GROUP}
eventhub:
namespace: ${EVENTHUB_NAMESPACE}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
최신 구성에서는 Azure 구독 ID 및 리소스 그룹에 대한 속성이 필요합니다.
spring:
cloud:
azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${EVENTHUB_NAMESPACE}
resource:
resource-group: ${RESOURCE_GROUP}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
ARM으로 우회하지 않고 직접 Microsoft Entra ID 인증하고 권한을 부여하도록 마이그레이션할 수도 있습니다. 메시징 작업에 필요한 보안 주체 Data 역할을 부여해야 합니다. 서비스 주체 및 관리 ID의 구성 예제는 다음과 같습니다.
서비스 주체를 사용하는 경우
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> eventhubs: namespace: ${EVENTHUB_NAMESPACE}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
관리 ID를 사용하는 경우
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity eventhubs: namespace: ${EVENTHUB_NAMESPACE}
API 변경 내용
다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
azure-spring-cloud-stream-binder-servicebus-*부터 spring-cloud-azure-stream-binder-servicebus까지
이 가이드는 버전 2 또는 spring-cloud-azure-stream-binder-servicebus.로의 azure-spring-cloud-stream-binder-servicebus-queue 마이그레이션을 azure-spring-cloud-stream-binder-servicebus-topic 지원하기 위한 것입니다.
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
레거시 바인더 라이브러리는 azure-spring-cloud-stream-binder-servicebus-queueazure-spring-cloud-stream-binder-servicebus-topic이제 하나의 spring-cloud-azure-stream-binder-servicebus병합됩니다.
중요하다
바인더 형식은 servicebus-queue 결합되고 servicebus-topicservicebus.
다음 표에서는 spring-cloud-azure-stream-binder-servicebus새 구성 속성을 나열합니다.
| 최신 속성 | 묘사 |
|---|---|
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type |
보내는 함수를 사용하는 경우 토픽 또는 큐로 설정할 수 있는 엔터티 형식을 설정해야 합니다. |
다음 표에서는 azure-spring-cloud-stream-binder-servicebus-*spring-cloud-azure-stream-binder-servicebus속성 매핑을 보여 줍니다.
| 레거시 속성 | 최신 속성 |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.servicebus.resource.resource-group |
spring.cloud.azure.servicebus.transport-type |
spring.cloud.azure.servicebus.client.transport-type |
spring.cloud.azure.servicebus.retry-options.retry-mode |
spring.cloud.azure.servicebus.retry.mode |
spring.cloud.azure.servicebus.retry-options.max-retries |
spring.cloud.azure.servicebus.retry.exponential.max-retries또는 spring.cloud.azure.servicebus.retry.fixed.max-retries,에 따라 구성해야 합니다.spring.cloud.azure.servicebus.retry.mode = fixedexponential |
spring.cloud.azure.servicebus.retry-options.delay |
spring.cloud.azure.servicebus.retry.exponential.base-delay또는 spring.cloud.azure.servicebus.retry.fixed.delay,에 따라 구성해야 합니다.spring.cloud.azure.servicebus.retry.mode = fixedexponential |
spring.cloud.azure.servicebus.retry-options.max-delay |
spring.cloud.azure.servicebus.retry.exponential.max-delay |
spring.cloud.azure.servicebus.retry-options.try-timeout |
spring.cloud.azure.servicebus.retry.try-timeout |
spring.cloud.stream.servicebus.queue.bindings.* |
spring.cloud.stream.servicebus.bindings.* |
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.concurrency |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls |
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete |
spring.cloud.stream.servicebus.topic.bindings.* |
spring.cloud.stream.servicebus.bindings.* |
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.concurrency |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls |
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete |
메모
sessionsEnabled가 true 경우 동시성 속성이 maxConcurrentSessions로 대체되고 sessionsEnabled가 false경우 maxConcurrentCalls로 바뀝니다.
메모
자동 완성을 사용하도록 설정하는 것은 RECORD 검사점 모드와 같으며 MANUAL 모드와 반대입니다.
구성 마이그레이션 예제
레거시 구성, 큐를 예로 들면 다음과 같습니다.
spring:
cloud:
azure:
servicebus:
connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
stream:
function:
definition: consume;supply
bindings:
consume-in-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
supply-out-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
servicebus:
queue:
bindings:
consume-in-0:
consumer:
checkpoint-mode: MANUAL
최신 구성:
spring:
cloud:
azure:
servicebus:
connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
stream:
function:
definition: consume;supply
bindings:
consume-in-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
supply-out-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
servicebus:
bindings:
consume-in-0:
consumer:
auto-complete: false
supply-out-0:
producer:
entity-type: queue #set as topic if needed
메모
Microsoft 사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 좋습니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.
연결 문자열 대신 보안 주체를 사용하는 경우 4.0 이전 버전에서 애플리케이션은 먼저 제공된 보안 주체를 사용하여 ARM(Azure Resource Manager)에 연결한 다음 ARM을 사용하여 지정된 네임스페이스의 연결 문자열 검색합니다. 결국 애플리케이션은 검색된 연결 문자열 사용하여 Azure Service Bus 연결합니다. 이러한 방식으로 제공된 보안 주체는 연결된 Azure Service Bus 네임스페이스를 검색하려면 Contributor 역할을 부여해야 합니다.
Azure Spring Apps 4.0의 경우 인증을 위해 보안 주체를 활용하는 두 가지 방법을 제공합니다. 하나는 여전히 보안 주체를 사용하여 ARM에 연결하고 보안 주체에 Contributor 역할이 필요한 연결 문자열을 검색합니다. 다른 하나는 보안 주체를 활용하여 Microsoft Entra ID 인증한 다음 Azure Service Bus 직접 연결합니다. 이 경우 Contributor 역할은 더 이상 필요하지 않지만 메시징 작업에는 다른 Data 관련 역할이 필요합니다. 보안 주체에 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인하려면 Microsoft Entra ID을 사용하여 액세스 권한 부여를 참조하세요.
ARM 기반 인증의 경우 서비스 주체를 예로 들어 할당된 역할이 변경되지 않아야 하는 구성 마이그레이션이 다음과 같이 나열됩니다.
레거시 구성:
spring:
cloud:
azure:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
tenant-id: <tenant>
resource-group: ${SERVICEBUS_RESOURCE_GROUP}
servicebus:
namespace: ${SERVICEBUS_NAMESPACE}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
최신 구성에서는 Azure 구독 ID 및 리소스 그룹에 대한 속성이 필요합니다.
spring:
cloud:
azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
subscription-id: ${AZURE_SUBSCRIPTION_ID}
servicebus:
namespace: ${SERVICEBUS_NAMESPACE}
resource:
resource-group: ${SERVICEBUS_RESOURCE_GROUP}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
ARM으로 우회하지 않고 직접 Microsoft Entra ID 인증하고 권한을 부여하도록 마이그레이션할 수도 있습니다. 메시징 작업에 필요한 보안 주체 Data 역할을 부여해야 합니다. 서비스 주체 및 관리 ID의 구성 예제는 다음과 같습니다.
서비스 주체를 사용하는 경우
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> servicebus: namespace: ${SERVICEBUS_NAMESPACE}
메모
tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 잘못된 엔드포인트(개인 및 조직 계정) 섹션의 오류 AADSTS50020 - ID 공급자의 사용자 계정이 테넌트에 존재하지 않습니다를 참조하세요. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은
관리 ID를 사용하는 경우
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity servicebus: namespace: ${SERVICEBUS_NAMESPACE}
API 변경 내용
- 메시지 헤더
AzureHeaders.RAW_ID삭제합니다.ServiceBusMessageHeaders.MESSAGE_ID를 대신 사용하세요.
다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs클래스 매핑을 보여 줍니다.
| 레거시 클래스 | 최신 클래스 |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.core.api.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
azure-spring-cloud-messaging
com.azure.spring:azure-spring-cloud-messaging 라이브러리는 4.0에 대해 준비되지 않았습니다. 수신기 주석의 함수는 다시 디자인 중이므로 @AzureMessageListener, @AzureMessageListeners및 @EnableAzureMessaging 주석은 현재 지원되지 않습니다.