2012-03-29 9 views
0

私は自分のプロジェクトで作成、更新、削除操作を保持するCUDServiceインターフェイスを持っています。すべてのサービスがそのインターフェースを実装しています。 CUDServiceImplは、CUDServiceを実装し、パブリックメソッド(作成、更新、削除)を持つ抽象クラスです。 たとえば、2つのメソッドを持つStudentServiceインターフェイスがあります。AspectJ操作のログ

public interface StudentService extends CUDService,Logged{ 

addMark(); 
deleteMark(); 

} 

public class StudentServiceImpl extends CUDServiceImpl implements StudentService{ 

@Override addmark... 
@Override deletemark.. 


} 

Loggedインターフェイスに注意してください。それは空のインターフェイスです。これは、aspectJがログ用にマークするサービスをマークするために作成したものです。

AspectJのポイントカットは、このように定義されています

実行(。* com.history.Logged + *(..))

、これはaddMark()、deleteMark()メソッドのために動作しますが、それdoesn` CUDServiceImplで定義されているメソッドの作成、更新、削除のために働きません! 私はこのようなStudentServiceImplクラスでこれらのメソッドをオーバーライドするかどうそれは動作します:

@Override create(){ 
super.create(); 
} 

を私は.. CUDServiceからのすべてのメソッドをオーバーライドするために事前に感謝しなくても、それを動作させるしたいと思います!

答えて

0

CUDServiceImplはLoggedインターフェイスを実装していないため、そのメソッドはaspectjによってクロスカットされていません。そのため、実装しているクラスでオーバーライドする必要があります。

関連する問題