Gerçekten ne istediğimi açıklamak zor. Bana bir sınıf değişkenleri için tüm çalışma zamanı hata ayıklama bilgilerini sağlayan bir yöntem getRuntimeInfo()
olan bir arabirim var. Bu arayüzü uygulayan tüm sınıfların listesini görmek istiyorum. Java ve Spring kullanıyorum. Bunu yapabilmemin tek yolu, tüm çekirdekleri Spring Bağlamından almak ve instanceof
operatörünü kullanarak kontrol etmektir. Ancak, açık performans etkileri için bunu yapmak istemem. Başka seçeneğim var mı?Belirli bir arabirimi uygulayan tüm sınıfları takip edin?
cevap
Ne:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
Liste sadece() başlatmak seferde doldurulur böylece "normal" çalışma zamanı performansında önemli bir etkiye sahip olmamalıdır.
Yorum:
sen Sen Bahar bir IOC Konteyner olduğunu biliyoruz kodunuzu
açıklayabilir. @Component
, Spring'e bu sınıfın bir örneğini (Spring Managed Bean olarak adlandırılır) oluşturması gerektiğini söyler. IOC, aynı zamanda, Konteyner'in diğer örneklere (Spring Managed Beans) referanslar enjekte etmesinden sorumlu olduğu anlamına gelir. @Autowire
(@Resource
ve @Inject
- hepsi aynıdır), Spring'e bu alanın Spring tarafından doldurulması gerektiğini söyleyen bir açıklamadır. Bahar, alanın hangi popülasyonlarda olması gerektiğini anlamaya çalışır. Yay kullanan varsayılan bir teknik by type
şeklindedir. Bu, Spring'in alanın türünü incelemesi ve eşleşen çekirdekleri araması anlamına gelir. Senin durumunda, genel bir Liste - bu biraz özel. Bu durumda Bahar, alanı, jenerik türle eşleşen tüm çekirdeklerin olduğu bir listeyle doldurur.
ApplicationBontext'ten getBeansOfType yöntemi nasıl? Arayüzünüzü uygulayan fasulyelerin bir haritasını döndürür mü? Bu çözüm hakkında
- 1. Genel bir arabirimi uygulayan bir sınıfın alt sınıfları
- 2. Yöntem parametresi, belirli arabirimi uygulayan belirli bir sınıfın objesi olmalıdır.
- 3. Belirli bir RSS kaynağını takip edin
- 4. Tüm açık belirli jenerik türlerini uygulayan tüm türleri alın
- 5. Belirli bir arabirimi bir anahtar/vakada uygulayan farklı enumlarla işleme Enum değerleri
- 6. Bir jQuery sortable öğesindeki tüm öğelerin konumlarını takip edin
- 7. Tüm tweetleri takip edin 2015-12-01 den 2016-03-20 ye kadar tüm takipçileri takip edin twitter api
- 8. Sadece belirli bir arabirimi uygulayan nesneleri kabul eden bir ArrayList oluşturmak mümkün mü?
- 9. Sınıf diyagramlarında, bir arabirimi uygulayan sınıflar yöntem adlarını tekrarlamalı mıdır?
- 10. Belirli protokolleri uygulayan tüm modülleri bulmak mümkün mü?
- 11. Belirli bir sınıf/arabirimden gelen tüm sınıfları listele
- 12. Tüm takipçileri takip edin Twitter tarafından Twitter'da Tweepy
- 13. iPad - Ağ trafiğini takip edin
- 14. Nesne farenin imlecini takip edin
- 15. jQuery - İmleci bir DIV ile takip edin
- 16. Scrubda yönlendirme bağlantılarını takip edin
- 17. Arabirimi
- 18. Aynı arabirimi uygulayan iki nesneye bağımlılığı olan Basit Enjektör
- 19. Aynı arabirimi uygulayan iki alt sınıf için genel bir yöntem tanımlama
- 20. Aynı arabirimi uygulayan birden çok hizmet, çalışma zamanında geçiş yapma
- 21. Tüm JDK sınıfları boyunca yineleme
- 22. Zaten toplanmış tupl'leri takip edin sql
- 23. Div pozisyonunu div (jQuery) ile takip edin -
- 24. knockoutjs + twitter bootstrap ile sekmeleri takip edin
- 25. Yazdırmak için metin dizisinden bunu takip edin
- 26. Erişim ihlali izini takip edin 0xC00000FD
- 27. Jackson Dizi Olmayan Polimorfik Sınıfları Deserialize Edin
- 28. Bir arabirimi uygulayan bir enum olmak için genel bir parametrenin nasıl gerekir?
- 29. .Net'te birden çok arabirimi uygulayan bir değişken bildirmenin bir yolu var mı?
- 30. Scala'dan Java arabirimi uygulayan bir sınıfta bildirilen bir değişkene neden erişemiyorum? Java'da
Sadece normal yay otomatik kablolama özelliğidir, özel bir şey yoktur. Sadece çekirdek yay özelliği – Ralph
@ user1117398: Cevabımı biraz açıklamak için uzattım. - İlkbahar 3.0 okumalısın gibi görünüyor! veya 3.1 öğretici. – Ralph