Farklı geçerli Ortam profiline bağlı olarak farklı mantığı kodlamam gerekir. Mevcut aktif ve varsayılan profilleri ilkbahardan nasıl edinebilirsiniz?Geçerli aktif/varsayılan Çevre profilini Bahar'da programsal olarak nasıl edinirsiniz?
cevap
Sen Autowiring kullanmıyorsanız
@Autowired
Environment env;
Çevre String[] getActiveProfiles()
, String[] getDefaultProfiles()
ve boolean acceptsProfiles(String... profiles)
Ayrıca @ Kaynak (Spring 4.2) –
sunuyor Çevre autowire olabilir, basitçe EnvironmentAware
İşte
daha eksiksiz bir örnektir uygulamak.
autowire Çevre
Önce çevre fasulye autowire isteyecektir. Profiller Aktif Profiller
var olmadığında
@Autowired
private Environment environment;
Kontrol Sonra profil etkin profillerin listede olup olmadığını öğrenmek için getActiveProfiles()
kullanabilirsiniz. String[]
'u getActiveProfiles()
'dan alır, bu diziden bir akış alır, ardından varsa boole döndüren birden çok profili (Case-Insensitive) kontrol etmek için eşleştiricileri kullanır.
//Check if Active profiles contains "local" or "test"
if(Arrays.stream(environment.getActiveProfiles()).anyMatch(
env -> (env.equalsIgnoreCase("test")
|| env.equalsIgnoreCase("local"))))
{
doSomethingForLocalOrTest();
}
//Check if Active profiles contains "prod"
else if(Arrays.stream(environment.getActiveProfiles()).anyMatch(
env -> (env.equalsIgnoreCase("prod"))))
{
doSomethingForProd();
}
Ayrıca benzer işlevsellik kullanacağım Burada ek açıklama @Profile("local")
elde edebilirsiniz bu teknik üzerinde bilgiler verilmiştir: Spring Profiles
@ Profile ile çalışır. En iyi çözüm gibi görünüyor. –
@Value("${spring.profiles.active}")
private String activeProfile;
O çalışır ve EnvironmentAware uygulamak gerekmez. Fakat bu yaklaşımın sakıncalarını bilmiyorum.
Bu satır şu hatayı verir: 'Neden: java.lang.IllegalArgumentException: Yer tutucu' spring.profiles.active 'değerinde "$ {spring.profiles.active}" türünde çözüm bulunamadı – zygimantus
(yorum yapamam ve benim düzenleme reddedildi) User1648825 en güzel basit bir cevap genişletme: hayır profilleri ayarlanmış olup olmadığını
@Value("${spring.profiles.active}")
private String activeProfile;
Bu
bir IllegalArgumentException atabilir (Ben boş bir değer elde). Ayarlanması gerekiyorsa bu iyi bir şey olabilir; @value için 'varsayılan' sözdizimi, yani kullanmayın eğer:@Value("${spring.profiles.active:Unknown}")
private String activeProfile;
spring.profiles.active Bundan fazla ayrıntıya ihtiyaç
- 1. Bir Sekme Çubuğu Denetleyicisini geçerli Uygulama Akışı'na Programsal Olarak Ekleme
- 2. SKReferenceNode'u programsal olarak ekleyin
- 3. Baharda MessageInterpolator
- 4. Açılırlık ve textarea'nın geçerli değerlerini foreach döngüsünde nasıl edinirsiniz?
- 5. ViewPager programsal olarak kaydırma
- 6. Yönergeyi programsal olarak açısal
- 7. Çevre
- 8. NSManagedObjectModel'de programsal olarak oluşturulan NSEntityDescription
- 9. Programsal olarak ayarlanmış textblock marjı
- 10. Programsal Olarak DocuSign belgesini onayla
- 11. Bir DNS Alanını Programsal Olarak Nasıl Silerim?
- 12. Zurb Vakfı 'Joyride': nasıl başlatılır/programsal olarak
- 13. UWP WebView'de Programsal Olarak Nasıl Gezinilir?
- 14. TFS değişiklik kümeleri programsal olarak nasıl birleştirilir?
- 15. Linux'ta ekran renklerinin programsal olarak nasıl dönüştürülmesi
- 16. EMF modellerini Java'da programsal olarak nasıl birleştirirsiniz?
- 17. Baharda WebPartFileFile datype
- 18. Grid için ImageBrush programsal olarak
- 19. Programsal olarak android Marshmallow sürüm
- 20. Göreli Düzenleme programsal olarak gösterilmiyor
- 21. UIPkorkntrolünü UIScrollView'e Programsal Olarak Bağlamak
- 22. JsonView Baharda + Kotlin
- 23. Güncel dizini kompakt çerçevede nasıl edinirsiniz?
- 24. Yükseklik düzenini animasyon olarak nasıl değiştirilir (programsal olarak)
- 25. Etiketler çevre etrafında nasıl konumlandırılır?
- 26. PHP'de 'referer' başlığını nasıl edinirsiniz?
- 27. Bir komut dosyasından IE'nin yüklü sürümünü programsal olarak nasıl belirleme
- 28. Python kaynağındaki tip ipuçlarını programsal olarak kaldırın
- 29. programsal olarak varsayılan bir uygulamayı sıfırla
- 30. Log4net programsal olarak bir adoAppender yapılandırıyor
çözülemedi eğer ... activeProfile şimdi 'Bilinmeyen' içeriyor. – aweigold
@aweigold: Geçerli etkin/varsayılan ortam profilini programlanabilir İlkbaharda 3.1. daha fazla ayrıntıya ihtiyacınız var? – Bobo
Bir düzenleme teklif ettim ... Tam düzenleme haklarına sahip değilim, oy kullanabildiğim zaman oylarımı geri alıyorum. – aweigold