私はSpring 3 AOPを使用しています.HttpServletRequestへのアクセスが必要な側面があります。それはこのようなものになります。Autowired HTTPServletRequest beanのAOPおよびアスペクトスレッドの安全性を確保する
@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" />
が、これは側面であっても、一度だけIoCコンテナあたりと呼ばれるinitメソッドで、安全HttpServletRequestのスレッドです?そうでない場合は、アドバイスの実行中にそれを取得してスレッドセーフにする最良の方法は何ですか?可能であれば、ローカルのスレッドを使用したくない場合があります。
トム、これは素晴らしい答えです。 Springがこれをどこかに書いて、私が読めるようにすることは可能でしょうか?プロキシ処理が実際にどのように機能するかについては、何かを見つけるのは非常に困難でした。ああ、私はinit()内からのリクエストにアクセスする必要はありません - それは私を不正行為にして、2つの質問を1つに絞ることでした:) –
@BrianReindel:私は私の答えにSpringのドキュメントへの参照を含めました。 –
こんにちはトーマス、答えのコードは動作しますか?また、 "http://stackoverflow.com/questions/22923813/set-systems-property-in-controller-and-access-that-in-an-aspect"について意見を述べることはできますか? – riship89