के लिए पहलू थ्रेड सुरक्षा मैं स्प्रिंग 3 एओपी का उपयोग कर रहा हूं, और मेरे पास एक पहलू है जिसके लिए HttpServletRequest तक पहुंच की आवश्यकता है। यह इस तरह दिखता है:स्प्रिंग एओपी और एक ऑटोवायर HTTPServletRequest बीन
@Aspect
public class MyAspect {
@Autowired
private HttpServletRequest httpServletRequest;
public void init() {
// Do something once...
}
@Before("my pointcut here...")
private void myMethod() {
// I need the httpServletRequest...
}
@After("my pointcut here...")
private void myOtherMethod() {
// I need the httpServletRequest...
}
}
और इस तरह कॉन्फ़िगर किया गया है:
<bean id="myAspect" class="com.some.package.MyAspect" init-method="init" />
init विधि केवल आईओसी कंटेनर प्रति एक बार कहा जाता है, भले ही यह एक पहलू है, और httpServletRequest धागा सुरक्षित है ? यदि ऐसा नहीं है, तो सलाह के निष्पादन के दौरान इसे प्राप्त करने का सबसे अच्छा तरीका क्या है और क्या यह धागा सुरक्षित है? यदि संभव हो तो मैं थ्रेड स्थानीय का उपयोग न करना पसंद करता हूं।
टॉम, यह एक अच्छा जवाब है। क्या यह संभव है कि स्प्रिंग ने कहीं ऐसा दस्तावेज किया होगा जिसे मैं पढ़ सकता हूं? प्रॉक्सी वास्तव में कैसे काम करता है उससे संबंधित कुछ भी ढूंढना बहुत मुश्किल था।ओह, और मुझे init() के भीतर से अनुरोध तक पहुंच की आवश्यकता नहीं है - वह मुझे धोखा दे रहा था और दो प्रश्नों को निचोड़ रहा था :) –
@BrianReindel: मैंने अपने उत्तर में स्प्रिंग दस्तावेज़ों का संदर्भ शामिल किया। –
हाय थॉमस, क्या उत्तर में कोड कोड होगा? क्या आप अपनी राय भी दे सकते हैं "http://stackoverflow.com/questions/22923813/set-systems-property-in-controller-and-access-that-in-an-aspect" – riship89