2016-05-02 7 views
0

コードでフィールドレベルの注釈を探し、そのフィールドを引数としてメソッドを呼び出す次のコードベースのスタイルのアスペクトがあります。これはコードベースのスタイルをAnnotationベースのスタイルに変換するSpringまたはAspectJを使用するAOP

public aspect EncryptFieldAspect 
{ 
    pointcut encryptStringMethod(Object o, String inString): 
     call(@Encrypt * *(String)) 
     && target(o) 
     && args(inString) 
     && !within(EncryptFieldAspect); 

    void around(Object o, String inString) : encryptStringMethod(o, inString) { 
     proceed(o, FakeEncrypt.Encrypt(inString)); 
     return; 
    } 
} 

上記の方法がうまく動作します..それはどのように見えるかですが、私は春またはAspectJの、これに似たものに基づいて、注釈に変換したいと思います。ビットの任意のヒントを混乱AspectJのドキュメントが参考になるが見つかりました。..

import org.aspectj.lang.ProceedingJoinPoint; 
import org.aspectj.lang.annotation.Around; 
import org.aspectj.lang.annotation.Aspect; 

@Aspect 
public class MyAspect { 

    @Around("execution(public * *(..))") 
    public Object allMethods(final ProceedingJoinPoint thisJoinPoint) throws Throwable { 
     System.out.println("Before..."); 
     try{ 
      return thisJoinPoint.proceed(); 
     }finally{ 
      System.out.println("After..."); 
     } 
    } 
} 

答えて

1

ないあなたが読んでいたDOCSいることを確認 - https://eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.htmlのページには、注釈スタイルにコードから変換する方法を示しています。私は彼らがそうであるほど包括的ではないことを認めます。基本的には

:アスペクトキーワードから

  • スイッチが
  • は、メソッドに無名のブロックからあなたのアドバイスを翻訳する方法で指定された注釈@Pointcut文字列にあなたのポイントカットを移動@Aspectします。以下のよう

あなたの元になってきて何か(引数の続行するので、これは周りのアドバイスをトリッキー取得することができます):

@Aspect 
public class EncryptFieldAspect 
{ 
    @Pointcut("call(@need.to.fully.qualify.Encrypt * *(java.lang.String)) && target(o) && args(inString) && !within(need.to.fully.qualify.EncryptFieldAspect)"); 
    void encryptStringMethod(Object o, String inString) {} 

    @Around("encryptStringMethod(o,inString)") 
    void myAdvice(Object o, String inString, ProceedingJoinPoint thisJoinPoint) { 
     thisJoinPoint.proceed(new Object[]{o, FakeEncrypt.Encrypt(inString)}); 
    } 
} 
+0

こんにちは、私は非常に類似したユースケースを持っています。私はspring-boot 1.4を使用していますが、Pointcutが不正な形式になっています:@Oroundでエラーが発生しました。何かアドバイス? – oak