Kütüphanenin Spring Boot uygulama context'inin bilgilerini okuması

BeecoV

Megapat
Katılım
18 Mayıs 2015
Mesajlar
208
Çözümler
2
Merhaba,

İki adet uygulamam var. A uygulamam bir kütüphane. Bu uygulamayı diğer mikroservislerime ekliyorum ve Interceptor olarak çalışıyor. A uygulamamda logging işlemine kibanada gösterebilmek adına bir field ekleme ihtiyacım var. Bunu StructuredArgument ile yapıyorum fakat, key olarak X, Value olarak spring. Application. Name bilgisini yollamam gerekiyor. Ben A uygulamasını B mikroservisine kütüphane olarak eklediğim zaman, B uygulamasının spring. Application. Name bilgisini alamıyorum. @Value ile denedim, Enviroment ile denedim, System. GetProperty ile denedim fakat olmuyor. ComponentScan ile yapılabilir diye duydum fakat nasıl yapmam gerektiğini bilmiyorum. Bu şekilde almak istememin sebebi de, A kütüphanesini kullanan birçok mikroservisim var ve hepsinde değişiklik yapmak istemiyorum. Kütüphanede değişiklik yapıp patch versiyon arttırıp işi bitirmek istiyorum. Tavsiye ve yardımlarınızı bekliyorum.
 
Son düzenleyen: Moderatör:
Bir şeyi yanlış ya da eksik yapıyor olmalısınız. Mesela ben şimdi çalışacak servisimde (sizdeki B gibi) ilgili bootstrap.yml içinde

Kod:
spring:
  application:
    name: isim

diye application name set edilmiş durumda.

Kütüphane olarak kullanılan servisimde (sizdeki A), bir sınıfın başına

Kod:
@Value("${spring.application.name}")
private String serviceId;

diye app name değerini tanımladım, bu sınıftaki bir methodda da

Kod:
String s = serviceId;

diye erişmek istedim.

Çalışacak (B) servisimi ayağa kaldırdığımda ve kütüphane olan servisin (A) ilgili yerine eriştiğimde B servisinin adını alabiliyorum. Projelerinizi gözden geçirin.
 
Spring.application.name değeri B'de tanımlı durumda aslında.

Kod:
@Value("${spring.application.name}")
private String serviceId;
kodu ile değer null geliyor. Inject edildiği uygulamanın yaml dosyasını okuyamıyor.

Kod:
@Value("\${spring.application.name}")
private val applicationName: String? = null

Kotlinde bu şekilde kullanıyorum fakat B uygulamasında debug ettiğimde dediğim gibi null değer geliyor.
 
Bence ilgili config dosyasının (appname içeren) okunmasında bir sıkıntı var, load edildiğinden emin olun.
 
@count hocam aspect ekledim de yine aynı okunmadı, mecbur uygulamaları tek tek güncelledim. Forward compatibility için uğraştım da, napalım artık. Teşekkür ediyorum.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…