Uygulama yapılandırma desteği
Bu makalede Spring Cloud Azure Uygulaması Yapılandırma kitaplığı açıklanmaktadır. Bu kitaplık, Azure Uygulaması Yapılandırma hizmetinden yapılandırmaları ve özellik bayraklarını yükler. Kitaplık, Ortam değişkenleri, komut satırı yapılandırmaları PropertySource
, yerel yapılandırma dosyaları gibi Spring ortamı tarafından önceden oluşturulmuş soyutlamalarla eşleşecek soyutlamalar oluşturur.
Spring, VMware tarafından geliştirilen ve Java uygulamaları oluşturmaya yönelik basitleştirilmiş, modüler bir yaklaşım sağlayan bir açık kaynak uygulama çerçevesidir. Spring Cloud Azure, Azure hizmetleriyle sorunsuz Spring tümleştirmesi sağlayan açık kaynak bir projedir.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Java Development Kit (JDK) sürüm 8 veya üzeri.
- Apache Maven
- Azure CLI
Uygulama Yapılandırması mağazanızı ayarlama
Azure Uygulaması Yapılandırma deponuzu oluşturmak için aşağıdaki komutu kullanın:
az appconfig create \
--resource-group <your-resource-group> \
--name <name-of-your-new-store> \
--sku Standard
Bu komut yeni, boş bir yapılandırma deposu oluşturur. Aşağıdaki içeri aktarma komutunu kullanarak yapılandırmalarınızı karşıya yükleyebilirsiniz:
az appconfig kv import \
--name <name-of-your-new-store> \
--source file \
--path <location-of-your-properties-file> \
--format properties \
--prefix /application/
Yapılandırmalarınızı yüklemeden önce onaylayın. Biçimi YAML olarak değiştirerek YAML dosyalarını karşıya yükleyebilirsiniz. ön ek alanı, istemci kitaplığı tarafından yüklenen varsayılan ön ek olduğundan önemlidir.
Kitaplık kullanımı
Özelliği bir uygulamada kullanmak için Spring Boot uygulaması olarak oluşturabilirsiniz. Bağımlılığı eklemenin en kullanışlı yolu Spring Boot starter com.azure.spring:spring-cloud-azure-starter-appconfiguration-config
iledir. Aşağıdaki örnek pom.xml dosyası Azure Uygulaması Yapılandırması'nı kullanır:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-version}</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.14.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-appconfiguration-config</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Not
Spring Boot 2.x kullanıyorsanız, sürümünü olarak 4.19.0
ayarladığınızdan spring-cloud-azure-dependencies
emin olun.
Bu ürün reçetesi için kullanılan sürüm hakkında daha fazla bilgi için bkz . Spring Cloud Azure'ın Hangi Sürümünü Kullanmalıyım.
Aşağıdaki örnekte, Uygulama Yapılandırması kullanan temel bir Spring Boot uygulaması gösterilmektedir:
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Bu örnek için bootstrap.properties dosyası aşağıdaki satırı içerir:
spring.cloud.azure.appconfiguration.stores[0].connection-string=${CONFIG_STORE_CONNECTION_STRING}
CONFIG_STORE_CONNECTION_STRING
, Azure Uygulaması Yapılandırma Deponuzun bağlantı dizesi sahip bir ortam değişkenidir. aşağıdaki komutu kullanarak bağlantı dizesi erişebilirsiniz:
az appconfig credential list --name <name-of-your-store>
Varsayılan olarak, hiçbir yapılandırma ayarlanmadıysa, ile başlayan /application/
yapılandırmalar Spring Profili ayarlanmadığı (No Label)
sürece varsayılan etiketiyle yüklenir ve bu durumda varsayılan etiket Spring Profilinizdir. Depo boş olduğundan hiçbir yapılandırma yüklenmez, ancak Azure Uygulaması Yapılandırma Özellik Kaynağı yine oluşturulur.
adlı /application/https://<name-of-your-store>.azconfig.io/
bir özellik kaynağı, bu deponun özelliklerini içeren oluşturulur. İstekte kullanılan etiket adın sonuna eklenir. Etiket ayarlı değilse, karakter \0
boş bir boşluk olarak bulunur.
Yapılandırma yükleniyor
Kitaplık, bir veya birden çok Uygulama Yapılandırması deposunun yüklenmesini destekler. Bir anahtarın birden çok depoda çoğaltılması durumunda, tüm depoların yüklenmesi en yüksek öncelikli depo yapılandırmasının yüklenmesine neden olur. Sonuncusu kazanır. Bu işlem aşağıdaki örnekte gösterilmiştir:
spring.cloud.azure.appconfiguration.stores[0].connection-string=[first-store-connection-string]
spring.cloud.azure.appconfiguration.stores[1].connection-string=[second-store-connection-string]
Örnekte, hem birinci hem de ikinci depolar aynı yapılandırmaya sahipse, ikinci depodaki yapılandırma en yüksek önceliğe sahiptir ve sonuncusu kazanır.
Not
Azure Uygulaması Yapılandırma ayarlarını diğer spring yapılandırmaları gibi kullanabilirsiniz. Daha fazla bilgi için Spring Boot belgelerindeki Temel Özellikler veya Hızlı Başlangıç: Azure Uygulaması Yapılandırması ile Java Spring uygulaması oluşturma bölümüne bakın.
Yapılandırmaları seçme
Yapılandırmalar, anahtarları ve etiketleri tarafından yüklenir. Varsayılan olarak, anahtarla /application/
başlayan yapılandırmalar yüklenir. Varsayılan etiket şeklindedir ${spring.profiles.active}
. Ayarlı değilse ${spring.profiles.active}
etiketli null
yapılandırmalar yüklenir. Etiket, null
Azure portalında olduğu gibi (No Label)
görünür.
Aşağıdaki örnekte gösterildiği gibi farklı anahtar ve etiket filtreleri seçerek yüklenen yapılandırmaları yapılandırabilirsiniz:
spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter=[my-key]
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=[my-label]
key-filter
özelliği aşağıdaki filtreleri destekler:
Anahtar filtresi | Etki |
---|---|
* |
Herhangi bir anahtarla eşleşir. |
abc |
adlı abc bir anahtarla eşleşir. |
abc* |
ile başlayan anahtar adlarıyla abc eşleşir. |
abc,xyz |
Anahtar adları abc veya xyz ile eşleşir. Virgülle ayrılmış beş değerle sınırlıdır. |
label-filter
özelliği aşağıdaki filtreleri destekler:
Etiket | Açıklama |
---|---|
* |
dahil olmak üzere \0 herhangi bir etiketle eşleşir. |
\0 |
Azure portalında olduğu gibi (No Label) görünen etiketlerle eşleşirnull . |
1.0.0 |
Etiketle 1.0.0 tam olarak eşleşir. |
1.0.* |
ile başlayan etiketlerle 1.0.* eşleşir. |
,1.0.0 |
Etiketlerle ve 1.0.0 ile null eşleşir. Virgülle ayrılmış beş değerle sınırlıdır. |
YAML'yi etiket filtreleriyle kullanıyorsanız ve ile null
başlamanız gerekiyorsa, aşağıdaki örnekte gösterildiği gibi etiket filtresinin tek tırnak içine alınması gerekir:
spring:
cloud:
azure:
appconfiguration:
stores:
- selects:
- label-filter: ',1.0.0'
Not
Filtrelerde ile ,
birleştiremezsiniz*
. Bu durumda ek bir seçme değeri kullanmanız gerekir.
Bahar Profilleri
Varsayılan olarak, spring.profiles.active
seçilen tüm yapılandırmalar için varsayılan label-filter
olarak ayarlanır. kullanarak label-filter
bu işlevi geçersiz kılabilirsiniz. Aşağıdaki örnekte gösterildiği gibi kullanarak içindeki label-filter
${spring.profiles.active}
Spring Profillerini kullanabilirsiniz:
spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter=,${spring.profiles.active}
spring.cloud.azure.appconfiguration.stores[0].selects[1].label-filter=${spring.profiles.active}_local
İlkinde label-filter
, etiketli null
tüm yapılandırmalar yüklenir ve ardından Spring Profilleri ile eşleşen tüm yapılandırmalar yüklenir. Spring Profillerinin, sonunda oldukları için yapılandırmalara göre null
önceliği vardır.
İkincisinde label-filter
dize _local
, Spring Profillerinin sonuna eklenir, ancak yalnızca son Spring Profiline eklenir.
Devre dışı bırakılmış depolar
yapılandırmasını spring.cloud.azure.appconfiguration.enabled
kullanarak tüm yapılandırma depoları için yüklemeyi devre dışı bırakabilirsiniz. Yapılandırma ile tek bir depoyu spring.cloud.azure.appconfiguration.stores[0].enabled
devre dışı bırakabilirsiniz.
Depoları devre dışı bırakmanın yanı sıra, depoları yüklenemezse devre dışı bırakılacak şekilde yapılandırabilirsiniz. Bu yapılandırma için kullanın spring.cloud.azure.appconfiguration.stores[0].fail-fast
. olarak ayarlanarak false
RuntimeException
devre dışı bırakıldığındafail-fast
, uygulama deposunun hiçbir yapılandırma yüklenmeden devre dışı bırakılmasına neden olur. Bir yapılandırma deposu başlangıçta devre dışı bırakılırsa, yenilemeden sonra değişiklikler denetlenemez. Ayrıca, yapılandırmalar güncelleştirilirse bu kaynaktan değer yüklemeye yönelik bir girişim yoktur.
Yenileme denetimi sırasında veya yapılandırmaları yeniden yüklemeye çalışırken bir RuntimeException
hata oluşursa, yenileme denemesi sona erer ve geçtikten refresh-interval
sonra yeniden denener.
Kimlik Doğrulaması
Kitaplık, Azure Kimlik Kitaplığı tarafından desteklenen tüm kimlik biçimlerini destekler. bağlantı dizesi ve yönetilen kimlik yapılandırması aracılığıyla kimlik doğrulaması yapabilirsiniz.
Connection string
bağlantı dizesi aracılığıyla kimlik doğrulaması, kurulumu yapılan en basit formdur. Aşağıdaki komutu kullanarak bir mağazanın bağlantı dizesi erişebilirsiniz:
az appconfig credential list --name <name-of-your-store>
Ardından özelliğini bağlantı dizesi olarak ayarlayabilirsinizspring.cloud.azure.appconfiguration.stores[0].connection-string
. Yerel yapılandırma dosyasındaki bağlantı dizesi bir ortam değişkeniyle eşlenecek yer tutucu değere ayarlamanızı kesinlikle öneririz. Bu yaklaşım, kaynak denetimine bağlantı dizesi eklemekten kaçınmanızı sağlar.
Spring Cloud Azure yapılandırması
Kitaplığı yapılandırmak için Spring Cloud Azure yapılandırmasını kullanabilirsiniz. Kitaplığı yapılandırmak için aşağıdaki özellikleri kullanabilirsiniz:
spring.cloud.azure.appconfiguration.stores[0].endpoint= <URI-of-your-configuration-store>
Yalnızca uç nokta ayarlandığında, istemci kitaplığı kimlik doğrulaması için DefaultAzureCredential kullanır. kimlik DefaultAzureCredential
doğrulaması için aşağıdaki yöntemleri kullanır:
- Ortam kimlik bilgileri
- Yönetilen Kimlik kimlik bilgileri
- Azure Geliştirici CLI kimlik bilgileri
- IntelliJ kimlik bilgileri
- Azure CLI kimlik bilgileri
- Azure PowerShell kimlik bilgileri
Yapılandırmaları okumak için sistem tarafından atanan kimlik gibi bir kimlik atamanız gerekir. Aşağıdaki komutu kullanarak bu atamayı oluşturabilirsiniz:
az role assignment create \
--role "App Configuration Data Reader" \
--assignee <your-client-ID> \
--scope /subscriptions/<your-subscription>/resourceGroups/<your-stores-resource-group>/providers/Microsoft.AppConfiguration/configurationStores/<name-of-your-configuration-store>
Not
Uç nokta başına tek bir kimlik doğrulama yöntemi tanımlayabilirsiniz: bağlantı dizesi, kullanıcı tarafından atanan kimlik veya belirteç kimlik bilgileri. Karıştırmanız ve eşleştirmeniz gerekiyorsa, farklı bir yöntem kullanan depoları değiştirmek için kullanabilirsiniz ConfigurationClientCustomizer
.
Coğrafi çoğaltma
Kitaplık, Azure Uygulaması Yapılandırmasının coğrafi çoğaltma özelliğini destekler. Bu özellik, verilerinizi başka konumlara çoğaltmanızı sağlar. Bu özellik, yüksek kullanılabilirlik ve olağanüstü durum kurtarma için kullanışlıdır.
Oluşturduğunuz her çoğaltmanın ayrılmış bir uç noktası vardır. Uygulamanız birden çok coğrafi konumda bulunuyorsa, uygulamanızın her dağıtımını bir konumda güncelleştirerek bu konuma daha yakın çoğaltmaya bağlanabilirsiniz ve bu da uygulamanızla Uygulama Yapılandırması arasındaki ağ gecikmesini en aza indirmeye yardımcı olur. Her çoğaltmanın ayrı istek kotası olduğundan, bu kurulum uygulamanızın ölçeklenebilirliğine yardımcı olurken çok bölgeli dağıtılmış bir hizmete de yardımcı olur.
Kitaplık aşağıdaki koşullardan herhangi birini gözlemlerse yük devretme gerçekleşebilir:
- Hizmet kullanılamıyor durum kodu (HTTP 500 veya üzeri) içeren yanıtları bir uç noktadan alır.
- Ağ bağlantısı sorunlarıyla karşılaşır.
- İstekler kısıtlandı (HTTP durum kodu 429).
Coğrafi çoğaltma ile yapılandırma deposu oluşturma
Yapılandırma deponuzun çoğaltmasını oluşturmak için Azure CLI'yı veya Azure portalını kullanabilirsiniz. Aşağıdaki örnek, Doğu ABD 2 bölgesinde bir çoğaltma oluşturmak için Azure CLI'yi kullanır:
az appconfig replica create --location --name --store-name [--resource-group]
Yapılandırma deposu çoğaltmasını kullanma
Bir çoğaltma oluşturduktan sonra, bunu uygulamanızda kullanabilirsiniz. Kaynak depoda olduğu gibi, Microsoft Entra Id veya bağlantı dizesi kullanarak çoğaltmanıza bağlanabilirsiniz.
Çoğaltmanıza bağlanmak için Microsoft Entra Kimliğini kullanmak için, aşağıdaki örnekte gösterildiği gibi yapılandırma deposu örneklerinizi listelemeniz endpoints
gerekir:
spring.cloud.azure.appconfiguration.stores[0].endpoints[0]=[your primary store endpoint]
spring.cloud.azure.appconfiguration.stores[0].endpoints[1]=[your replica store endpoint]
Çoğaltmalarınız kadar uç noktayı listeleyebilirsiniz. Kitaplık, uç noktalara listelendikleri sırayla bağlanmaya çalışır. Kitaplık bir çoğaltmaya bağlanamıyorsa, listede bir sonrakini dener. Bir süre geçtikten sonra kitaplık tercih edilen uç noktalara yeniden bağlanmayı dener.
Anahtar değerleri
Azure Uygulaması Yapılandırması, bazılarında yerleşik özel özellikler bulunan birden çok anahtar değeri türünü destekler. Azure Uygulaması Yapılandırması JSON içerik türü, Spring yer tutucuları ve Key Vault başvuruları için yerleşik desteğe sahiptir.
Yer tutucular
Kitaplık, -style ortam yer tutucularıyla ${}
yapılandırmaları destekler. Yer tutucusu olan bir Azure Uygulaması Yapılandırma anahtarına başvururken, başvurudan ön ekleri kaldırın. Örneğin, /application/config.message
olarak ${config.message}
başvurulur.
Not
Kaldırılan ön ek değeriyle spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter
eşleşir.
JSON
İçerik türüne application/json
sahip yapılandırmalar JSON nesneleri olarak işlenir. Bu özellik, bir yapılandırmayı içindeki @ConfigurationProperties
karmaşık bir nesneyle eşlemenizi sağlar. Örneğin, aşağıdaki değere sahip JSON anahtarını /application/config.colors
göz önünde bulundurun:
{
"Red": {
"value": [255, 0, 0]
},
"Blue": {
"value": [0, 255, 0]
},
"Green": {
"value": [0, 0, 255]
}
}
Bu anahtar aşağıdaki kodla eşler:
@ConfigurationProperties(prefix = "config")
public class MyConfigurations {
private Map<String, Color> colors;
}
Key Vault başvuruları
Azure Uygulaması Yapılandırması ve kitaplıkları Key Vault'ta depolanan gizli dizilere başvurmayı destekler. Uygulama Yapılandırması'da, Key Vault'ta depolanan gizli dizilerle eşleyen değerlerle anahtarlar oluşturabilirsiniz. Gizli diziler Key Vault'ta güvenli bir şekilde depolanır, ancak yüklendikten sonra diğer yapılandırmalarla aynı şekilde erişilebilir.
Uygulamanız, Uygulama Yapılandırması depolanan diğer anahtarlarda olduğu gibi Key Vault başvurularını almak için istemci sağlayıcısını kullanır. İstemci anahtarları Key Vault başvuruları olarak tanıdığından, benzersiz bir içerik türüne sahiptir ve istemci key vault'a bağlanarak sizin için değerlerini alır.
Not
Key Vault, gizli dizilerin tek seferde yalnızca bir kez alınmasına izin verdiğinden, Uygulama Yapılandırması depolanan her Key Vault başvurusu Key Vault'a karşı bir çekmeyle sonuçlanabilir.
Key Vault başvuruları oluşturma
Azure portalında, Yapılandırma gezgini>Key Vault başvurusu oluşturma bölümüne giderek bir Key Vault başvurusu oluşturabilirsiniz.> Ardından, erişiminiz olan anahtar kasalarından herhangi birinden başvurmak üzere bir gizli dizi seçebilirsiniz. Giriş sekmesinden rastgele Key Vault başvuruları da oluşturabilirsiniz. Azure portalında geçerli bir URI girin.
Aşağıdaki komutu kullanarak Azure CLI aracılığıyla bir Key Vault başvurusu da oluşturabilirsiniz:
az appconfig kv set-keyvault \
--name <name-of-your-store> \
--key <key-name> \
--secret-identifier <URI-to-your-secret>
Azure CLI aracılığıyla herhangi bir gizli dizi tanımlayıcısı oluşturabilirsiniz. Gizli dizi tanımlayıcıları yalnızca sürüm bölümünün isteğe bağlı olduğu biçimi {vault}/{collection}/{name}/{version?}
gerektirir.
Key Vault başvurularını kullanma
Kitaplığı yapılandırmak için Spring Cloud Azure yapılandırmasını kullanabilirsiniz. Azure Key Vault'a bağlanmak için Uygulama Yapılandırması bağlanmak için kullanılan kimlik bilgilerini kullanabilirsiniz.
Key Vault dışı gizli dizileri çözme
Uygulama Yapılandırması kitaplığı, kendisiyle ilişkilendirilmiş bir Key Vault'a sahip olmayan gizli dizileri yerel olarak çözümlemek için bir yöntem sağlar. Bu çözüm aracılığıyla KeyVaultSecretProvider
yapılır. KeyVaultSecretProvider
, bir Key Vault başvurusu için sağlanmayan TokenCredential
durumlarda çağrılır. Key Vault başvurusunun URI'si sağlanır ve döndürülen değer gizli dizinin değeri olur.
Uyarı
Bir kullanımı KeyVaultSecretProvider
, sistem tarafından atanan yönetilen kimliğin otomatik kullanımını geçersiz kılar. Her ikisini de kullanmak için, çözümlenmesi gereken URI'leri kullanmanız KeyVaultCredentialProvider
ve döndürmeniz null
gerekir.
public class MySecretProvider implements KeyVaultSecretProvider {
@Override
public String getSecret(String uri) {
...
}
}
Özellik yönetimi
Özellik yönetimi, Spring Boot uygulamalarının içeriğe dinamik olarak erişmesi için bir yol sağlar. Özellik yönetimi aşağıdakiler gibi çeşitli işlevlere sahiptir:
- İçeriği etkinleştirebilen veya devre dışı bırakabilen özellik bayrakları
- İçerik gösterildiğinde hedefleme için özellik filtreleri
- Özelleştirilmiş özellik filtreleri
- Uç noktaları dinamik olarak etkinleştirmek için özellik geçitleri
Özellik bayraklarını aşağıdaki yapılandırmayla etkinleştirebilirsiniz:
spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled= true
Etkin özellik bayrakları Spring yapılandırma sistemine ön ekiyle feature-management
yüklenir. Özellik bayraklarını yerel yapılandırma dosyasına da kaydedebilirsiniz. Daha fazla bilgi için Özellik bayrağı bildirimi bölümüne bakın.
Özellik yönetimini kullanmanın en kolay yolu ve spring-cloud-azure-feature-management-web
kitaplıklarını spring-cloud-azure-feature-management
kullanmaktır. İki kitaplık arasındaki fark, özellik geçitleri gibi daha fazla özellik eklemek için ve spring-webmvc
kitaplıklarına bağımlı spring-web
olmasıdırspring-cloud-azure-feature-management-web
.
Anahtar/etiket filtrelerini kullanarak özellik bayraklarını etkinleştirebilirsiniz. Varsayılan olarak, olarak (No Label)
görülen bir null
etiket atanır. Aşağıdaki örnekte gösterildiği gibi bir etiket filtresi ayarlayarak yüklenen özellik bayraklarını yapılandırabilirsiniz:
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].key-filter=A*
spring.cloud.azure.appconfiguration.stores[0].feature-flags.selects[0].label-filter= dev
Özellik yönetimiyle ilgili temel bilgiler
Özellik bayrakları
Özellik bayrakları iki bölümden oluşur: bir ad ve özelliği açmak için kullanılan özellik filtreleri listesi. Özellik bayraklarının boole durumu açık/kapalı olabilir veya özellik filtrelerinin bir listesi olabilir. Özellik bayrakları, özellik filtrelerini döndürene true
kadar değerlendirir. Özellik filtresi döndürülmezse true
, özellik bayrağı döndürür false
.
Özellik filtreleri
Özellik filtreleri, bir özelliğin ne zaman etkinleştirilmesi gerektiğine yönelik bir senaryo tanımlar. Özellik filtreleri zaman uyumlu olarak değerlendirilir.
Özellik yönetimi kitaplığı önceden tanımlanmış dört filtreyle birlikte gelir: AlwaysOnFilter, PercentageFilter, TimeWindowFilter ve TargetingFilter.
Özel özellik filtreleri oluşturabilirsiniz. Örneğin, Microsoft Edge tarayıcısı kullanan müşterilere özel bir deneyim sağlamak için özellik filtresi kullanabilirsiniz. Bu özellik filtresindeki özellikleri özelleştirerek, örneğin Microsoft Edge tarayıcı hedef kitlesine yönelik belirli bir üst bilgiyi gösterebilirsiniz.
Özellik bayrağı bildirimi
Özellik yönetimi kitaplığı, özellik bayrakları için kaynak olarak application.yml veya bootstrap.yml ile birlikte Azure Uygulaması Yapılandırması'nı destekler. bir application.yml dosyasında özellik bayraklarını ayarlamak için kullanılan biçime bir örnek aşağıda verilmiştir:
feature-management:
feature-t: false
feature-u:
enabled-for:
- name: Random
feature-v:
enabled-for:
- name: TimeWindowFilter
parameters:
Start: "Wed, 01 May 2019 13:59:59 GMT"
End: "Mon, 01 July 2019 00:00:00 GMT"
feature-w:
evaluate: false
enabled-for:
- name: AlwaysOnFilter
Bu örnekte aşağıdaki özellik bayrakları vardır:
feature-t
olarak ayarlanırfalse
. Bu ayar her zaman özellik bayrağının değerini döndürür.feature-u
özellik filtreleri ile birlikte kullanılır. Bu filtreler özelliği altındaenabled-for
tanımlanır. Bu durumda,feature-u
herhangiRandom
bir yapılandırma gerektirmeyen adlı bir özellik filtresi vardır, bu nedenle yalnızca name özelliği gereklidir.feature-v
adlıTimeWindowFilter
bir özellik filtresi belirtir. Bu özellik filtresi, yapılandırma olarak kullanılacak parametreler geçirilebilir. Bu örnekte, birTimeWindowFilter
, özelliğin etkin olduğu başlangıç ve bitiş saatlerini geçirir.feature-w
her zaman olarak değerlendirilentrue
için kullanılırAlwaysOnFilter
. buevaluate
alan, özellik filtrelerinin değerlendirilmesini durdurmak için kullanılır ve özellik filtresinin her zaman döndürülmesine neden olurfalse
.
Özellik bayraklarını değerlendirme
Kitaplık spring-cloud-azure-feature-management
, özellik bayrağının etkinleştirilip etkinleştirilmediğini belirlemek için sağlar FeatureManager
. FeatureManager
bayrağının durumunu denetlemek için zaman uyumsuz bir yol sağlar.
spring-cloud-azure-feature-management-web
, sağlamanın FeatureManager
yanı sıra, tüm isteklerin aynı değeri döndürdüğünü garanti etmek için içinde @RequestScope
daha önce değerlendirilen özellik bayraklarının durumunu önbelleğe alan öğesini içerirFeatureManagerSnapshot
. Buna ek olarak, web kitaplığı @FeatureGate
web isteklerini farklı uç noktalara yönlendirebilen veya engelleyebilen sağlar.
Özellik bayrağı denetimi
FeatureManager
, tür nesnelerine @Component
ekleyebileceğiniz veya ekleyebileceğiniz @Autowired
bir @Bean
dosyadır. FeatureManager
bir özellik bayrağının adı geçirildiğinde durumunu döndüren bir yönteme isEnabled
sahiptir.
@Autowired
FeatureManager featureManager;
if (featureManager.isEnabled("feature-t")) {
// Do Something
}
Not
FeatureManger
ayrıca adlı isEnabledAsync
zaman uyumsuz bir sürümüne isEnabled
sahiptir.
Özellik yönetimini yapılandırmadıysanız veya özellik bayrağı yoksa, isEnabled
her zaman döndürür false
. Mevcut bir özellik bayrağı bilinmeyen bir özellik filtresiyle yapılandırıldıysa, bir FilterNotFoundException
oluşturulur. olarak yapılandırarak fail-fast
bu davranışı döndürecek false
şekilde false
değiştirebilirsiniz. Aşağıdaki tabloda açıklanmaktadır fail-fast
:
Veri Akışı Adı | Açıklama | Zorunlu | Varsayılan |
---|---|---|---|
spring.cloud.azure.feature.management.fail-fast |
Bir özel durum oluşursa, bir RuntimeException oluşturulur. Bu özellik olarak false ayarlanırsa, bunun isEnabled yerine döndürür false . |
Hayır | true |
ile FeatureManager
arasındaki FeatureManagerSnapshot
tek fark, içindeki sonuçları önbelleğe alma işlemidir@RequestScope
.
Özellik kapısı
Özellik yönetimi web kitaplığıyla, bir uç noktayı yürütmek için belirli bir özelliğin etkinleştirilmesini zorunlu kılabilirsiniz. Aşağıdaki örnekte gösterildiği gibi ek açıklamayı @FeatureGate
kullanarak bu gereksinimi ayarlayabilirsiniz:
@GetMapping("/featureT")
@FeatureGate(feature = "feature-t")
@ResponseBody
public String featureT() {
...
}
Uç noktaya yalnızca "feature-t" etkinse erişebilirsiniz featureT
.
Devre dışı bırakılmış eylem işleme
Bir uç nokta, belirttiği özellik devre dışı bırakıldığından engellendiğinde çağrılır DisabledFeaturesHandler
. Varsayılan olarak, bir HTTP 404 döndürülür. Aşağıdaki örnekte gösterildiği gibi uygulayarak DisabledFeaturesHandler
bu davranışı geçersiz kılabilirsiniz:
@Component
public class MyDisabledFeaturesHandler implements DisabledFeaturesHandler {
@Override
public HttpServletResponse handleDisabledFeatures(HttpServletRequest request, HttpServletResponse response) {
...
return response;
}
}
Yönlendirme
Bazı yollar, özellikler tarafından geçitli uygulama özelliklerini kullanıma sunabilir. Bir özellik devre dışı bırakılırsa, aşağıdaki örnekte gösterildiği gibi bu yolları başka bir uç noktaya yönlendirebilirsiniz:
@GetMapping("/featureT")
@FeatureGate(feature = "feature-t" fallback= "/oldEndpoint")
@ResponseBody
public String featureT() {
...
}
@GetMapping("/oldEndpoint")
@ResponseBody
public String oldEndpoint() {
...
}
Yerleşik özellik filtreleri
Paketle birlikte spring-cloud-azure-feature-management
gelen birkaç özellik filtresi vardır. Bu özellik filtreleri otomatik olarak eklenmez, ancak bunları içinde @Configuration
ayarlayabilirsiniz.
AlwaysOnFilter
Bu filtre her zaman döndürür true
. Kullanım örneği için özellik bayrağı bildirimi bölümüne bakın.
PercentageFilter
Bir kullanıcı her istekte bulunun, değerlendirmesi PercentageFilter
farklı bir sonuç döndürebilir. Kullanıcı başına özellik bayrağının sonucunu önbelleğe alan komutunu kullanarak FeatureManagementSnapshot
bu tutarsızlığı aşabilirsiniz. Bu özellik, kullanıcının isteği yeniden göndermesi gerekse bile tutarlı bir deneyime sahip olmasını sağlar.
feature-management:
feature-v:
enabled-for:
- name: PercentageFilter
parameters:
Value: 50
TimeWindowFilter
Bu filtre, bir özelliği bir zaman penceresine göre etkinleştirme özelliği sağlar. Yalnızca End
belirtirseniz, özellik o zamana kadar açık olarak kabul edilir. Yalnızca Start
belirtirseniz, özellik bu süreden sonraki tüm noktalarda açık olarak kabul edilir. Her ikisini de belirtirseniz, özellik iki kez arasında geçerli kabul edilir.
feature-management:
feature-v:
enabled-for:
- name: TimeWindowFilter
parameters:
Start: "Wed, 01 May 2019 13:59:59 GMT",
End: "Mon, 01 July 2019 00:00:00 GMT"
TargetingFilter
Bu filtre, bir özelliği hedef kitle için etkinleştirme özelliği sağlar. Hedeflemenin ayrıntılı açıklaması için hedefleme bölümü bölümüne bakın. Filtre parametreleri, kullanıcıları, grupları açıklayan bir hedef kitle nesnesini ve özelliğe erişimi olması gereken kullanıcı tabanının varsayılan yüzdesini içerir. Hedef kitlede listelenen her grup nesnesi için, söz konusu grubun özelliğe erişimi olan üyelerinin yüzdesini tanımlayan bir yüzde gerekir. Bir kullanıcı aşağıdaki durumlarda özelliği etkinleştirmiştir:
- Kullanıcı doğrudan kullanıcıların bölümünde belirtilir.
- Kullanıcı, grup dağıtımlarının dahil edilen yüzdesinde yer alır.
- Kullanıcı varsayılan dağıtım yüzdesine girer.
feature-management:
target:
enabled-for:
- name: targetingFilter
parameters:
users:
- Jeff
- Alicia
groups:
- name: Ring0
rollout-percentage: 100
- name: Ring1
rolloutPercentage: 100
default-rollout-percentage: 50
Özel özellik filtreleri
Özel özellik filtresi oluşturmak, tanımladığınız ölçütlere göre özellikleri etkinleştirmenin bir yolunu sağlar. Özel özellik filtresi oluşturmak için arabirimini FeatureFilter
uygulamanız gerekir. FeatureFilter
tek bir yönteme evaluate
sahiptir. Bir özellik, özellik filtresiyle etkinleştirilebileceğini belirttiğinde evaluate
yöntemi çağrılır. döndürürse evaluate
true
, özelliğin etkinleştirilmesi gerektiği anlamına gelir. döndürürse, biri döndürene false
true
kadar özellik filtrelerini değerlendirmeye devam eder. Tüm filtreler döndürürse false
, özellik kapalıdır.
Özellik filtreleri Spring Beans olarak tanımlanır, bu nedenle olarak @Component
tanımlanır veya içinde @Configuration
tanımlanır.
@Component("Random")
public class Random implements FeatureFilter {
@Override
public boolean evaluate(FeatureFilterEvaluationContext context) {
double chance = Double.valueOf((String) context.getParameters().get("chance"));
return Math.random() > chance / 100;
}
}
Parametreli özellik filtreleri
Bazı özellik filtreleri, bir özelliğin açık olup olmayacağını belirlemek için parametreler gerektirir. Örneğin, bir tarayıcı özellik filtresi belirli bir tarayıcı kümesi için bir özelliği açabilir. Microsoft Edge ve Chrome tarayıcıları için bir özelliğin etkinleştirilmesini isteyebilirsiniz ancak Firefox'u etkinleştirmemek isteyebilirsiniz. Bu durumu ayarlamak için, parametreleri bekleyebileceğiniz bir özellik filtresi tasarlayabilirsiniz. Bu parametreler özellik yapılandırmasında ve kodda belirtilebilir ve parametresi evaluate
aracılığıyla FeatureFilterEvaluationContext
erişilebilir olacaktır. FeatureFilterEvaluationContext
parameters
HashMap<String, Object>
özelliğine sahiptir.
Hedefleme
Hedefleme, geliştiricilerin yeni özellikleri kullanıcı tabanına aşamalı olarak dağıtmasını sağlayan bir özellik yönetimi stratejisidir. Strateji, hedef kitle olarak bilinen bir kullanıcı kümesini hedefleme kavramını temel alır. Hedef kitle belirli kullanıcılardan, gruplardan ve tüm kullanıcı tabanının belirlenmiş yüzdelerinden oluşur. Hedef kitleye dahil edilen gruplar, toplam üyelerinin yüzdelerine ayrılabilir.
Aşağıdaki adımlarda yeni bir 'Beta' özelliği için aşamalı dağıtım örneği gösterilmektedir:
- Bireysel kullanıcılar Jeff ve Alicia'ya Beta erişimi verilir.
- Başka bir kullanıcı, Mark, kabul etmek ister ve dahil edilir.
- "Ring1" olarak bilinen bir grubun yüzde yirmisi Beta'ya dahil edilir.
- Betaya dahil edilen "Ring1" kullanıcılarının sayısı yüzde 100'e kadar artırılır.
- Kullanıcı tabanının yüzde beşi betaya dahil edilir.
- Dağıtım yüzdesi yüzde 100'e kadar artırılır ve özellik tamamen kullanıma sunulmaktadır.
Bir özelliği dağıtmaya yönelik bu strateji, dahil edilen özellik filtresi aracılığıyla kitaplıkta yerleşik olarak bulunur TargetingFilter
.
Uygulamada hedefleme
Örnek projede hedefleme özelliği filtresini kullanan örnek bir web uygulaması kullanılabilir.
bir uygulamada kullanmaya TargetingFilter
başlamak için, bunu diğer herhangi bir @Bean
özellik filtresi gibi eklemeniz gerekir. TargetingFilter
uygulamasına TargetingContextAccessor
eklenecek başka bir @Bean
uygulamaya dayanır. , TargetingContextAccessor
aşağıdaki örnekte gösterildiği gibi geçerli kullanıcı kimliğini ve gruplarını tanımlamak için kullanılacak geçerlinin tanımlanmasına TargetingContext
olanak tanır:
public class MyTargetingContextAccessor implements TargetingContextAccessor {
@Override
public void getContextAsync(TargetingContext context) {
context.setUserId("Jeff");
ArrayList<String> groups = new ArrayList<String>();
groups.add("Ring0");
context.setGroups(groups);
}
}
Değerlendirme seçeneklerini hedefleme
Belirli TargetingFilter
bir üzerinde hedefleme değerlendirmesinin nasıl gerçekleştirildiğini özelleştirmek için seçenekler kullanılabilir. Oluşturma sırasında TargetingFilter
isteğe bağlı bir parametresi TargetingEvaluationOptions
ayarlayabilirsiniz.
@Bean
public TargetingFilter targetingFilter(MyTargetingContextAccessor contextAccessor) {
return new TargetingFilter(contextAccessor, new TargetingEvaluationOptions().setIgnoreCase(true));
}
Yapılandırma yenilemesi
Yapılandırmalarınız için yapılandırma yenilemeyi etkinleştirmek, uygulamayı yeniden başlatmak zorunda kalmadan Uygulama Yapılandırması deponuzdan veya depolarınızdan en son değerlerini çekmenizi sağlar.
Yenilemeyi etkinleştirmek için izleme tetikleyicileriyle birlikte izlemeyi etkinleştirmeniz gerekir. İzleme tetikleyicisi, güncelleştirmeleri tetikleme amacıyla değer değişiklikleri denetlenen isteğe bağlı etiketi olan bir anahtardır. İzleme tetikleyicisinin değeri, yenileme gerektiğinde değiştiği sürece herhangi bir değer olabilir.
Not
İzleme tetikleyicisinin ETag'ini değiştiren herhangi bir işlem, içerik türü değişikliği gibi bir yenilemeye neden olur.
spring:
cloud:
azure:
appconfiguration:
stores:
- monitoring:
enabled: true
triggers:
- key: [my-watched-key]
label: [my-watched-label]
Yapılandırma yenilemesini tetiklemek için yapılandırma deponuzdaki bir anahtarın değerini değiştirin. Ardından saat tuşlarından birini yeni bir değere güncelleştirin. Bu değişiklik bir günlük oluşturulmasını tetikler. Örneğin, değerinin /application/config.message
değiştirilmesi aşağıdaki günlük iletisini tetikler:
INFO 17496 --- [TaskScheduler-1] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [config.message]
Uygulama günlüğü oluşturduktan sonra yenileme kapsamındaki tüm @Bean
bilgileri yeniler.
Not
Varsayılan olarak, @ConfigurationProperties
açıklamalı fasulyeler bu kapsama eklenir.
Çekme tabanlı yenileme
Uygulama Yapılandırması Spring kitaplıkları, izleme tetikleyicilerinde yapılan değişiklikler için düzenli aralıklarla yenileme aralığını denetleme özelliğini destekler. Varsayılan olarak yenileme aralığı 30 saniye olarak ayarlanır. Yenileme aralığı geçtikten sonra, tüm tetikleyiciler değişiklikler için verilen depoda denetlenir. Anahtarda yapılan herhangi bir değişiklik, yenilemenin tetiklenmesine neden olur. Kitaplıklar Spring yenileme sistemiyle tümleştirildiği için, tüm yenilemeler tüm depolardan tüm yapılandırmaları yeniden yükler. Yenileme aralığını 1 saniyeden uzun herhangi bir zaman aralığına ayarlayabilirsiniz. Yenileme aralığı s
için desteklenen birimler sırasıyla , m
, h
ve d
saniyeler, dakikalar, saatler ve günler içindir. Aşağıdaki örnek yenileme aralığını 5 dakikaya ayarlar:
spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 5m
Otomatik
Kitaplığı kullandığınızda spring-cloud-azure-appconfiguration-config-web
, özellikle de bir servlet isteği gerçekleştiğinde ServletRequestHandledEvent
uygulama otomatik olarak yenilemeyi denetler. Bu olayın gönderilmesinin en yaygın yolu, içindeki @RestController
uç noktalara yönelik isteklerdir.
El ile
Konsol uygulamaları gibi yalnızca spring-cloud-azure-appconfiguration-config
kullanan uygulamalarda, yöntemini refreshConfiguration
çağırarak AppConfigurationRefresh
yenilemeyi el ile tetikleyebilirsiniz. AppConfigurationRefresh
, herhangi @Component
bir öğesine ekleyebileceğiniz bir @Bean
işlemdir.
Ayrıca, kitaplık Spring'in yapılandırma sistemini kullandığından, yenilemeyi tetiklemek yalnızca Azure Uygulaması Yapılandırma deponuzdaki yapılandırmaların yeniden yüklenmesine değil tüm yapılandırmalarınızın yenilenmesine neden olur.
Anında iletme tabanlı yenileme
Yapılandırma değerlerinizi yenilemek spring-cloud-azure-appconfiguration-config-web
için kitaplığı Azure Uygulaması Yapılandırma deponuzdan anında iletme bildirimleri alacak şekilde ayarlayabilirsiniz. Bu yapılandırmayı, belirtilen anahtarlara değişiklik bildirimleri göndermek üzere yapılandırabileceğiniz bir Azure Event Grid Web Kancası aracılığıyla ayarlayabilirsiniz. Spring Actuator kitaplığını bağımlılık olarak ekleyerek Uygulama Yapılandırması yenileme uç noktalarını kullanıma açabilirsiniz. İki farklı uç nokta vardır: appconfiguration-refresh
ve appconfiguration-refresh-bus
. Bu uç noktalar, uygulama yapılandırma uç noktalarının alma sırasında yenilemeyi zorlamak yerine yenileme aralığını sona erdirdiği karşılıkları refresh
ve refresh-bus
ile benzer şekilde çalışır. ve refresh-bus
'yi refresh
kullanmaya devam edebilirsiniz, ancak kurulumda bir yanıta ihtiyaç duyduklarından, bunları bir Web Kancası ile doğrudan Azure Event Grid'e bağlayamazsınız.
Özelliğin appconfiguration-refresh
yenileme aralığının süresi dolduğundan, bir sonraki yenileme denetiminden önce kalan yenileme aralığı beklemez. özelliği, appconfiguration-refresh-bus
bir uygulamanın tüm örneklerini yenilemeleri için bilgilendirmek için Azure Service Bus gibi bağlı bir mesajlaşma hizmetine bir bildirim gönderir. Her iki durumda da yenileme aralığında süresi tamamen dolmaz, ancak küçük bir değişim miktarıyla kapalıdır. Bu değişim, uygulamanızın her örneğinin aynı anda yenilemeyi denememesini sağlar.
management.endpoints.web.exposure.include= appconfiguration-refresh, appconfiguration-refresh-bus
Yenileme uç noktalarının kullanıma alınmasına ek olarak, güvenlik için gerekli bir sorgu parametresi eklenmiştir. Varsayılan olarak hiçbir belirteç adı veya değeri ayarlanmadı, ancak aşağıdaki örnekte gösterildiği gibi uç noktaları kullanmak için bir ayar yapılması gerekir:
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name=[primary-token-name]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret=[primary-token-secret]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.secondary-token.name=[secondary-token-name]
spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.secondary-token.secret=[secondary-token-secret]
Web kancalarını ayarlama
Web kancası ayarlamak için Azure Uygulaması Yapılandırma deponuzu açın ve gezinti menüsünden Olaylar'ı açın. Ardından Olay Aboneliği'ne tıklayın. Olayınızın adını ayarlayın ve uç nokta türünü Web Kancası olarak seçin. Web Kancası'nın seçilmesi bir Uç Nokta seçeneğinin görünmesine neden olur. Bir uç nokta seçin'i belirleyin. Uç noktanız aşağıdaki örnekteki gibi görünmelidir: https://www.myaplication.com/actuator/appconfiguration-refresh?myTokenName=mySecret
.
Seçimi Onayla verilen URI'ye bir kurulum bildirimi gönderir ve bir yanıt bekler. Yanıt döndürülmezse kurulum başarısız olur. azure-spring-cloud-appconfiguration-web
Uygulama için Azure Uygulaması Yapılandırma deposu yapılandırılmışsa, uç noktalar için kitaplık kurulumu doğru yanıtı döndürür. Bu onay başka şekillerde gönderilebilir. Web kancası teslimi hakkında daha fazla bilgi için bkz . Web kancası olay teslimi.
Not
Bu doğrulama yalnızca uç noktanın oluşturulması veya değiştirilmesi üzerine gerçekleşir.
Aksi takdirde her anahtar oluşturma ve değiştirme işleminden sonra yenileme tetiklendiğinden, filtreleri ayarlamanızı kesinlikle öneririz.
Zorlamalı istemci yenilemesi
Kitaplığı, yenileme aralığındaki tüm yapılandırmaların yenilenmesini zorlayacak şekilde yapılandırabilirsiniz. Aşağıdaki tabloda özelliği açıklanmaktadır refresh-interval
:
Veri Akışı Adı | Açıklama | Zorunlu | Varsayılan |
---|---|---|---|
spring.cloud.azure.appconfiguration.refresh-interval |
Yenilemeler arasındaki standart süre. bir Duration ' dir. |
Hayır | boş |
ile spring.cloud.azure.appconfiguration.refresh-interval
yenileme, yapılandırılmış hiçbir saat anahtarını denetlemez. Bu özellik, Key Vault gizli dizilerinin güncel tutulduğundan emin olmak için kullanılır çünkü Azure Uygulaması Yapılandırması ne zaman güncelleştirildiklerini anlayamaz.
Azure Key Vault bir sertifikanın ortak ve özel anahtar çiftini gizli dizi olarak depoladığı için uygulamanız Uygulama Yapılandırması'de herhangi bir sertifikayı Key Vault başvurusu olarak alabilir. Sertifikaların düzenli aralıklarla döndürülmüş olması gerektiğinden, istemci uygulamalarının da aynı sıklıkta güncelleştirilerek istemci yenileme aralığı kullanılarak yapılması gerekir.
Özellik bayrağı yenileme
Özellik bayraklarının ve izlemenin her ikisi de etkinse, özellik bayrakları için yenileme aralığı varsayılan olarak 30 saniye olarak ayarlanır. Yenileme aralığı geçtikten sonra, tüm özellik bayrakları değişiklikler için verilen depoda denetlenir. Anahtarda yapılan herhangi bir değişiklik, yenilemenin tetiklenmesine neden olur. Kitaplıklar Spring yenileme sistemiyle tümleştirildiği için, tüm yenilemeler tüm depolardan tüm yapılandırmaları yeniden yükler. Yenileme aralığını 1 saniyeden uzun herhangi bir zaman aralığına ayarlayabilirsiniz. Yenileme aralığı s
için desteklenen birimler sırasıyla , m
, h
ve d
saniyeler, dakikalar, saatler ve günler içindir. Aşağıdaki örnek yenileme aralığını 5 dakikaya ayarlar:
spring.cloud.azure.appconfiguration.stores[0].monitoring.feature-flag-refresh-interval= 5m
Sistem durumu göstergesi
İstemci kitaplığı, Azure Uygulaması Yapılandırma deposuna veya depolarına bağlantının iyi durumda olup olmadığını denetleen bir sistem durumu göstergesiyle birlikte gelir. Her depo için etkinleştirilirse aşağıdaki durum değerlerinden birini verir:
- UP - Son bağlantı başarılı oldu.
- AŞAĞI- Son bağlantı 200 olmayan bir hata koduyla sonuçlandı. Bu durum, süresi dolan kimlik bilgileri ile hizmet sorunu arasında değişen sorunlardan kaynaklanıyor olabilir. İstemci kitaplığı, bir sonraki yenileme aralığında depoya bağlanmak için otomatik olarak yeniden denenir.
- YÜKLENMEDİ - Yapılandırma deposu yerel yapılandırma dosyasında listelenir, ancak yapılandırma deposu başlangıçta dosyadan yüklenmedi. Yapılandırma deposu yapılandırma dosyasında devre dışı bırakıldı veya depo yapılandırması olarak ayarlanırken
fail-fast
false
yapılandırma veya yapılandırmalar başlangıçta yüklenemedi.
sistem durumu göstergesini ayarıyla management.health.azure-app-configuration.enabled=true
etkinleştirebilirsiniz.
İstemci özelleştirmesi
Uygulama Yapılandırması kitaplığı, Azure Uygulaması Yapılandırmasına ve Azure Key Vault'a bağlanmak için Java için Azure SDK'sını kullanır. İstemcileri ConfigurationClientCustomizer
SecretClientCustomizer
değiştirmek için ve olmak üzere iki arabirim sağlanır. Her arabirim, aşağıdaki arabirim tanımlarında gösterildiği gibi istemcinin String
yapılandırıldığı URI değeriyle birlikte ilgili oluşturucusunu alan bir customize
yönteme sahiptir:
public interface ConfigurationClientCustomizer {
public void setup(ConfigurationClientBuilder builder, String endpoint);
}
public interface SecretClientCustomizer {
public void setup(SecretClientBuilder builder, String endpoint);
}
Bu arabirimler, HTTP istemcisinin ve yapılandırmalarının özelleştirilmesini sağlar. Aşağıdaki örnek, varsayılan HttpClient
değeri Uygulama Yapılandırması ve Key Vault'a yönlendirilen tüm trafik için ara sunucu kullanan başka bir örnekle değiştirir.
Not
ConfigurationClientBuilder
ve SecretClientBuilder
zaten içine geçirildiğinde kullanılacak şekilde ayarlanmıştırcustomize
. Kimlik bilgileri ve yeniden deneme ilkesi de dahil olmak üzere istemcilerde yapılan tüm değişiklikler, zaten mevcut olanları geçersiz kılar.
Bu yapılandırmayı Spring Cloud Azure yapılandırmasını kullanarak da yapabilirsiniz.
public class CustomClient implements ConfigurationClientCustomizer, SecretClientCustomizer {
@Override
public void customize(ConfigurationClientBuilder builder, String endpoint) {
builder.httpClient(buildHttpClient());
}
@Override
public void customize(SecretClientBuilder builder, String endpoint) {
builder.httpClient(buildHttpClient());
}
private HttpClient buildHttpClient() {
String hostname = System.getProperty("https.proxyHosts");
String portString = System.getProperty("https.proxyPort");
int port = Integer.valueOf(portString);
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP,
new InetSocketAddress(hostname, port));
return new NettyAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
}
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin