2017-06-16 2 views
0

私はこの質問をしているので、私の要求には解決策が見つかりませんでした。Spring AOP:Spring Aspectクラスのアドバイスメソッドに呼び出し側メソッドの引数値を取得する方法

要件:

は現在、私は休息と春の統合で春のブートを使用してプロジェクトに取り組んでいます。

My Requirement成功と失敗の両方のシナリオについて、すべてのゲートウェイサービスコールを監査テーブルに記録します。各ゲートウェイには、監査テーブルに格納する必要のあるゲートウェイ固有の情報が含まれています。監査情報を記録するためにSpring AOP - @After Adviceアノテーションを使用していますが、この注釈メソッドではゲートウェイサービスのCALLERメソッドの一部である監査値が必要です。

例:

@Autowired 
com.study.pattern.sample.app.gateway.EmployeGatewayservice employeGatewayservice; 

public EmployeOutput getEmployeInformation(EmployeInput employeInput,AuditInput auditInput) 
{ 
    employeGatewayservice.getEmployeInfomation(employeInput); 
} 

どのように私は私のアドバイスでauditInputオブジェクトを取得することができます。

@Pointcut("execution(* com.study.pattern.sample.app.gateway..*(..))") 
    protected void gateWayCalls() 
    { 

    } 

     @After("gateWayCalls()") 
     public void logAfter(JoinPoint joinPoint) { 
     **// Here i need auditInput Object** 
    } 

サービスメソッドの一部ではないゲートウェイは、ロジックを呼び出す含まれているので、私はgetEmployeInformation() にアドバイスメソッドを呼び出すには制限があります。

私の場合、サービス方法ではないAspect on Gatewayを使用する必要があります。

私は、私の春のaop @AfterアドバイスにCallerメソッドの引数を取得する方法を探していましたか?

答えて

0

MethodInterceptorを使用するように考えてみましょう:

public Object invoke(MethodInvocation invocation) throws Throwable { 
     Object[] arguments = invocation.getArguments(); 
     return invocation.proceed(); 
    } 
+0

はあなたビランをありがとう、私がしようとしたが、それはうまくいきませんでしたが、私は他のオプションが値を持つ独自のカスタム監査注釈を作成し、私は監査とゲートウェイのメソッドを注釈を付けました注釈、これらの値は私のAspectで取得しています。 – Maddy

+0

こんにちは@マディ、どうやってこれをやったの? – vkrishna17

+0

申し訳ありませんが、遅い応答は私のgitのリンクを共有します – Maddy

関連する問題