Strtus2 Action クラスには、getData()、getDetails() などの名前のメソッドがあります。これらに加えて、アクション クラスにいくつかのゲッター/セッターがあります。ロギングの目的で Spring の AOP 機能を使用したいと考えています。サービス クラスを呼び出している getData() および getDetails() メソッドのログを維持する必要がありますが、アクション クラスに存在するゲッター/セッターのログを維持したくありません。
アスペクトにメソッド名をハードコーディングしたくありません。これを実装する方法の手がかりがありません。私を助けてください。
私のAOP Loggerクラスは次のようなものです:
@Before("myPointCut() && allService()")
public void logEntryService(JoinPoint joinPoint) {
System.out.println("Start of " + joinPoint.getSignature().getName() + "() of "+joinPoint.getThis());
start = System.currentTimeMillis();
}
@After("myPointCut() && allService()")
public void logExitService(JoinPoint joinPoint) {
System.out.println("End of " + joinPoint.getSignature().getName() + "() of "+joinPoint.getThis());
start = System.currentTimeMillis();
}
@Pointcut("@annotation(com.ing.trialbal.log.LogThis)")
public void myPointCut() {
System.out.println("*************My PointCut");
}
@Pointcut("execution(* com.ing.trialbal.*.*.*(..))")
public void allService() {
System.out.println("************All service");
}
LogThis.java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LogThis {
}
しかし、サービス内のすべてのメソッドとログを取得するための dao に常に @Logthis を記述する必要があるため、これによりアプリケーションで非常に緊密な結合が作成されました。