2017-11-24 6 views
0

私は春のブート・レスト・サービスでサービス・コールの前にいくつかの変更を加えるためにインターセプターを書いています。インターセプタpreHandle HanderMethodにどのようにアクセスできますか?

私のコードを示す画像を追加しました。どのようにpreHandleメソッドを記述しましたか?絵で

は、私が ハンドラである "orginationTaskServerMockEnabled = true" の値を持って帰りたいと思う - > bean-> mHandler - > dashboardConfig-> originationTaskServerMockEnabled

それはdoesntのことで、私は、試したことがすることが可能ですHanlderMethodから値を持って来てください。もしそうなら、私を助けてください。

enter image description here

+0

あなたはどのように 'dashboardConfig'からそれを抽出しようとしましたか? – Bnrdo

+0

HandlerMethodで試行しました。しかし、私はそれを得ることができませんでした。 – Maharajan

答えて

0

インターセプタのpreHandleでハンドラの引数にアクセスすることはできません。ハンドラメソッドの実際の呼び出しの前に呼び出されます。実際の引数型の解決は呼び出し中に行われるため、preHandleの実行中に引数の値はまだ解決されません(ただし、引数はObject handlerとなります)。実行中にはHttpServletRequestHttpServletResponseしか知られていないので、データが要求に添付されている場合はそこから取得できます。

また、アスペクトを使用してコントローラメソッドの周りにラップすることもできます。そこからメソッド引数を取得して、前処理を実行できます。

@Around("execution (* com.pck.controllers.*.*(..)) && @annotation(org.springframework.web.bind.annotation.RequestMapping)") 
public Object beforeHandler(ProceedingJoinPoint p){ 
    Object args[] = joinpoint.getArgs(); 
    return joinpoint.proceed(); 
} 
+0

情報をありがとうございました。 – Maharajan

関連する問題