Sınıfları üzerinden baklalara bakmam gerekiyor. Fasulyeler bir Proxy tarafından sarıldığında (bazı yöntemler @ Transactional) - ApplicatoinContext onları bulmakta başarısız olur. Onları bir arayüz üzerinden ararsam işe yarıyor, ama bu durumda somut bir sınıf türü ile çalışıyorum. Fasulyenin aradığım türde olduğunu biliyorum, ancak getBean() yöntemi başarısız oluyor.Spring ApplicationContext.getBean (Sınıf c) proxy sınıfları için çalışmaz
Sorunu, Spring'in AbstractBeanFactory kodunda hata ayıklayabilir (ve düzeltebilirim). Sorun şu ki ben beanInstance türünü talep ediyorum türüne karşı denetler, ancak beanInstance.getClass() bir Proxy'dir. AbstractBeanFactory bunu telafi etmeli ve türü proxy'nin hedef sınıfıyla karşılaştırmalıdır.
Bunun için bir çarem var ama özellikle yamanın yamulmuş bir sürümünü kullanmak istemiyorum ve bu çalışmayı yapmak için yapılandırabileceğim bir şey olması gerektiğinden şüpheleniyorum, ya da gerçekten bir hata mı?
Açıklama için teşekkürler - Fasulyeimi bir arayüz üzerinden alabildiğimi keşfettim. Bunu kullanmayı düşündüm ama sorun şu ki benim durumumda somut sınıfa kesinlikle başvurmam gerekiyor (somut sınıf ayrıca güvendiğim başka bir arayüzü de uyguluyor). Bugün etrafta çalışmak için GCLIB seçeneğini kullanacağım sonucuna geldim. Neden bunu kullanmak istemez ki? Vekil sınıfları kullanmak için, bu bir 'özellik' değil, bana bir böcek gibi kokuyor! –
@AlexWorden: Sınıfınız birkaç arayüz uygularsa, bunlardan herhangi birini getirebilirsiniz. CGLIB'nin dezavantajlarından biri de CGLIB (harici kütüphane) kullanmanız. Eh, ne bir hata ne de bir özellik - Bahar, AOP'yi bir şekilde uygulamak zorundadır ve bunlar en yaygın iki özelliktir. Ayrıca CGLIB, bir tane yerine sınıfınızın iki örneğini oluşturmak gibi başka yan etkilere de sahiptir. Bir yorum için iki şey –