2011-05-20 15 views
9

İlkbaharda özel kapsamı anlama konusunda yardıma ihtiyacım var Referans kitapçığından geçtim ve bu konu hakkında biraz bilgim var ama bana neden olan soru aslında benim get yöntemine yapılan çağrı olduğunda kapsam ara yüzünün uygulanması olarak yapılmıştır. Anlayışım, kapsamı = myscope'lu bir fasülyenin tanımlanması ise de, Spring nesneyi almak için kapsam uygulamada get yöntemini çağırır. Ama bir örnekle karşılaştığımda garip bir şey fark ettim.İlkbaharda özel kapsamı anlama

çağrı yöntemi

Object targetBean = getApplicationContext().getBean(task.getBeanName()); 

ama deyimi aşağıdaki yürütülmesi üzerine açıklama

aşağıdaki yürütülmesi üzerinden verilmediği almak.

ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments); 

Özel kapsam uygulama ve alma yöntemi hakkında daha fazla bilgi vererek bana yardımcı olabilir.

Not: İlgili örnekte Özel kapsamı herhangi bir yerel iplikle bana customscope bir çalışma örneği bağlantı sağlayabilir, bu ben geniş kullanımı yaptık

cevap

2

büyük yardımı olacak .. Threadlocal birlikte kullanılır geçmişte özel kapsamları durum bilgisi nesneler tekil hizmetler içine enjekte etmek.

Anladığım kadarıyla, bir proxy, özel kapsamlı fasulye seçer ve proxy, fasülyenin, fasülyenin yöntem çağırma yöntemindeki kapsamından alır.

Object targetBean = getApplicationContext().getBean(task.getBeanName()); 

targetBean

ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments); 

doğru fasulye almak için org.springframework.beans.factory.config.Scope#get yoluyla aramaları vekil üzerindeki yöntem çağırır vekil olacak durumda da Dolayısıyla Spring Indepth

görün