Aracılığıyla paylaş


Spring Cloud Azure nedir?

Spring Cloud Azure, Spring uygulamalarında Azure hizmetlerinin kullanımını kolaylaştırmaya yardımcı olan açık kaynaklı bir projedir.

Spring Cloud Azure, tüm kaynakların genel kullanıma sunulduğu açık kaynaklı bir projedir. Aşağıdaki liste bu kaynaklara bağlantılar sağlar:

Spring Cloud Azure ne için kullanılır?

Spring Cloud Azure, Spring uygulamalarında aşağıdaki görevleri gerçekleştirmeyi kolaylaştırmaya yardımcı olabilir:

Spring Cloud Azure kullanmanın avantajları

Aşağıdaki bölümde Spring Cloud Azure kullanmanın avantajları gösterilmektedir. Bu bölümde, örnek olarak Azure Key Vault'ta depolanan gizli bilgilerin alınması kullanılmıştır. Bu bölüm, Spring Cloud Azure ile ve Spring Cloud Azure olmadan Spring Boot uygulaması geliştirme arasındaki farkları karşılaştırır.

Spring Cloud Azure olmadan

Spring Cloud Azure olmadan, Azure Key Vault'ta depolanan gizli dizileri almak istiyorsanız aşağıdaki adımları uygulamanız gerekir:

  1. pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:

    <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-security-keyvault-secrets</artifactId>
       <version>4.5.2</version>
    </dependency>
    
  2. Aşağıdaki örneğe benzer bir kod kullanarak SecretClient sınıf örneği oluşturun:

    public class DemoClass {
        public static void main(String... args) {
        SecretClient client = new SecretClientBuilder()
            .vaultUrl("vaultUrl")
            .credential(new ClientSecretCredentialBuilder()
                .tenantId("tenantId")
                .clientId("clientId")
                .clientSecret("clientSecret")
                .build())
            .buildClient();
        }
    }
    
  3. Aşağıdaki örnekte gösterildiği gibi bu özellikleri yapılandırılabilir hale getirerek client-id ve client-secret gibi sabit kodlama bilgilerinden kaçının:

    @ConfigurationProperties("azure.keyvault")
    public class KeyVaultProperties {
        private String vaultUrl;
        private String tenantId;
        private String clientId;
        private String clientSecret;
    
        public KeyVaultProperties(String vaultUrl, String tenantId, String clientId, String clientSecret) {
            this.vaultUrl = vaultUrl;
            this.tenantId = tenantId;
            this.clientId = clientId;
            this.clientSecret = clientSecret;
        }
    
        public String getVaultUrl() {
            return vaultUrl;
        }
    
        public void setVaultUrl(String vaultUrl) {
            this.vaultUrl = vaultUrl;
        }
    
        public String getTenantId() {
            return tenantId;
        }
    
        public void setTenantId(String tenantId) {
            this.tenantId = tenantId;
        }
    
        public String getClientId() {
            return clientId;
        }
    
        public void setClientId(String clientId) {
            this.clientId = clientId;
        }
    
        public String getClientSecret() {
            return clientSecret;
        }
    
        public void setClientSecret(String clientSecret) {
            this.clientSecret = clientSecret;
        }
    }
    
  4. Uygulama kodunuzu bu örnekte gösterildiği gibi güncelleştirin:

    @SpringBootApplication
    @EnableConfigurationProperties(KeyVaultProperties.class)
    public class SecretClientApplication implements CommandLineRunner {
        private KeyVaultProperties properties;
    
        public SecretClientApplication(KeyVaultProperties properties) {
            this.properties = properties;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SecretClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) {
            SecretClient client = new SecretClientBuilder()
                .vaultUrl(properties.getVaultUrl())
                .credential(new ClientSecretCredentialBuilder()
                    .tenantId(properties.getTenantId())
                    .clientId(properties.getClientId())
                    .clientSecret(properties.getClientSecret())
                    .build())
                .buildClient();
            System.out.println("sampleProperty: " + client.getSecret("sampleProperty").getValue());
        }
    }
    
  5. Aşağıdaki örnekte gösterildiği gibi gerekli özellikleri application.yml dosyanıza ekleyin:

    azure:
      keyvault:
        vault-url:
        tenant-id:
        client-id:
        client-secret:
    
  6. SecretClient birden çok yerde kullanmanız gerekiyorsa bir SecretClient çekirdeği tanımlayın. Ardından SecretClient numaralı kabloyu ilgili yerlerde otomatik olarak bağlayın.

Spring Cloud Azure ile

Spring Cloud Azure ile, Azure Key Vault'ta depolanan gizli dizileri almak istiyorsanız, aşağıdaki adımlarda gösterildiği gibi gereksinimler daha basittir:

  1. pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin:

    <dependencies>
      <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
      </dependency>
    </dependencies>
    
  2. Aşağıdaki örnekte gösterildiği gibi Spring Cloud Azure sürümünü yönetmek için bir ürün reçetesi (BOM) kullanın:

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

    Not

    Spring Boot 3.0.x-3.4.x kullanıyorsanız, sürümü spring-cloud-azure-dependencies olarak ayarladığınızdan 5.23.0 emin olun. Spring Boot 2.x kullanıyorsanız, spring-cloud-azure-dependencies sürümünü 4.20.0olarak ayarladığınızdan emin olun. Bu Ürün Reçetesi (BOM), <dependencyManagement> dosyanızın bölümünde yapılandırılmalıdır. Bu, tüm Spring Cloud Azure bağımlılıklarının aynı sürümü kullanmasını sağlar. BOM için kullanılan sürüm hakkında daha fazla bilgi almak için, "Spring Cloud Azure'ın Hangi Sürümünü Kullanmalıyım?" bölümüne bakın.

  3. application.yml dosyanıza aşağıdaki özellikleri ekleyin:

    spring:
      cloud:
        azure:
          keyvault:
            secret:
              endpoint:
    
  4. Aşağıdaki komutu kullanarak Azure CLI ile oturum açın. Ardından kimlik bilgileriniz Azure CLI tarafından sağlanacağı için client-id ve client-secretgibi başka kimlik bilgileri eklemeniz gerekmez.

    az login
    
  5. Aşağıdaki örnekte gösterildiği gibi, ilgili yerlerde SecretClient kablosunu otomatik olarak bağlayın.

    @SpringBootApplication
    public class SecretClientApplication implements CommandLineRunner {
    
        private final SecretClient secretClient;
    
        public SecretClientApplication(SecretClient secretClient) {
            this.secretClient = secretClient;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SecretClientApplication.class, args);
        }
    
        @Override
        public void run(String... args) {
            System.out.println("sampleProperty: " + secretClient.getSecret("sampleProperty").getValue());
        }
    }
    

Spring Cloud Azure, otomatik olarak yapılandırılan SecretClientdışında bazı başka özellikler de sağlayacaktır. Örneğin, aşağıdaki örnekte gösterildiği gibi gizli değeri almak için @Value kullanabilirsiniz:

@SpringBootApplication
public class PropertySourceApplication implements CommandLineRunner {

    @Value("${sampleProperty1}")
    private String sampleProperty1;

    public static void main(String[] args) {
        SpringApplication.run(PropertySourceApplication.class, args);
    }

    public void run(String[] args) {
        System.out.println("sampleProperty1: " + sampleProperty1);
    }

}

Spring Cloud Azure bileşenleri

Azure desteği

Service Bus, Depolama, Active Directory gibi Azure Hizmetleri için otomatik yapılandırma desteği sağlar.

Microsoft Entra Kimlik Hizmeti (ID)

Kimlik doğrulaması için Microsoft Entra ID ile Spring Security için tümleştirme desteği sağlar. Daha fazla bilgi için bkz. Spring Securityiçin Spring Cloud Azure desteği .

Azure Key Vault

Azure Key Vault Gizli Anahtarları ile entegrasyon için Spring @Value anotasyon desteği sağlar. Daha fazla bilgi için bkz. Spring Cloud Azure gizli yönetimi.

Azure Depolama

Azure Depolama hizmetleri için Spring Boot desteği sağlar. Daha fazla bilgi için bkz. Spring Cloud Azure kaynak işleme.

Destek alın

Spring Cloud Azure için desteğe ihtiyacınız varsa aşağıdaki yollarla yardım isteyebilirsiniz:

Sonraki adımlar