2017-04-05 1 views
0

私がしたいのは、カスタムアノテーションを作成してサービスで使用し、そこからメソッドが呼び出されるたびに何かを実行することです。例:Javaでカスタムアノテーションを作成し、メソッドが呼び出されたときに使用する

@CustomAnnotation 
public Class MyService{ 

    public void myMethod(){ 
     //do something 
    } 
} 

myMethodが呼び出されたときに、コードが実行される前に何かしてから、何をしなければならないかを実行します。 これを行う方法はありますか?私はアノテーションを使ってそれを行う必要があります。インタフェースや継承を使うのは、それぞれのメソッドだけでなく、役に立たないためです。

私は、注釈付きのクラスを取得するためにパッケージをスキャンする方法を知っていますが、アプリが実行されているときにランタイムにチェックする方法はわかりません。

ありがとうございました!

+0

Afaik、AOP(アスペクト指向プログラミング)と呼ばれるもの...実行時に注釈付きメソッドの前に実行されるものの例:http://www.yegor256.com/2014/06/01/aop-aspectj -java-method-logging.html –

+0

http://www.oracle.com/technetwork/articles/hunter-meta-3-092019.html –

+0

ありがとうございました! AroundとAspectで注釈を付けられたメソッドは自動的に実行されますか?動作を定義すると、mvn installを実行した後に正常に動作するはずです。 – Motomine

答えて

0

あなたが必要とするのは、AOP(アスペクト指向プログラミング)を使用することで実現できると思われます。

Iveはコード例hereを掲載しました。注釈付きメソッドの前にいくつかのコードを実行し、他のコードでは実行しません。

AOPを使用すると、メソッドを含むクラスのコードに干渉することなく、メソッド自体とその呼び出しコードを変更せずにメソッドの動作を変更できます。この手法を使用してメソッドの実行をスキップすることもできます(@Aroundアドバイスを使用)。メソッドの実行を許可する前にセキュリティチェックが必要な場合などに便利です。

関連する問題