2012-10-20 12 views
6

neden olur:problemlerin önü ilkbaharda CGLIB proxy kullanma

a) yapıcısı

b çift çağırma) başka bir yöntemle

gelen çağrılan bir yöntemi müdahale etmesine izin ama bahar yaratır

neden bir fasulye ve sonra bir proxy? Belirli bir fasülye sınıfını genişleten ve daha sonra kurucuyu yalnızca bir kez çağırmak için dinamik olarak sınıf oluşturmak mümkün mü? Kamu ve korunan yöntemler için a) ve b) çözer. bir şey mi eksik?

cevap

4

İyi soru. Spring bootstraps uygulama içeriğinin nasıl bir kaynak olduğunu düşünüyorum: ilk önce tüm çiğ fasülyeleri oluşturur ve sonra post işlemcileri uygular, örn. AOP ekleme (işlemler dahil). Bu katmanlı mimari, önce normal fasülye oluşturmayı ve sonra onu sarmalamayı gerektirir. Bu yaklaşımın, numaralı ilke çerçevesinde kompozisyonunu izlediğini söyleyebiliriz. Ayrıca, a)'un bir sorun olmaması gerektiğini unutmayın. Sınıf, kurucuda başlatmayı değil, yalnızca bir kez çağrılan @PostConstruct yönteminde gerçekleştirmemelidir.

c) bir, CGLIB proxy ile yapıcı enjeksiyon kullanmak SPR-3150

göremiyorum Ama kaygılarınızı anlıyoruz: Öte yandan bu başka bir sorun yol açar. Tek geçerli geçici çözümün, AspectJ dokumacılığının tamamı olduğunu tahmin et.