ロギングと例外の目的で、Spring AOP で slf4j を使用しています。一部のクラスには、メソッド チェーンを形成するメソッドがいくつかあります。最初のメソッドの入口と出口点でログを記録することはできますが、このメソッドが別のメソッドを呼び出すと、AOP は最初のメソッドの入口と出口点のみをログに記録します@Around
。ここで注釈を使用してすべてのメソッドの入口と出口点をログに記録したいのは、説明する疑似コードです。私が欲しいもの
package com.sample;
public class Test implements T{
@Override
public void show() {
System.out.println("Test.show()");
test();
}
void Test(){
//Want to log entry and exit point of this method whenever this method called by any other method
//The method may belongs to same class or different package's different class
}
spring.xml
このようなものです
<bean id="exceptionAspect" class="com.sample.ExceptionAspect"/>
<bean id="test" class="com.sample.Test"/>
私のAdvise class
見た目
@Aspect
public class LoggingAspect {
@Around(value="execution (* com.sample.*.*(..))||"+
"execution(* some other package.*.*(..))")
public void logAround(ProceedingJoinPoint joinPoint) throws Throwable {
final Logger logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass());
logger.info("Execution of : " + joinPoint.getSignature() + " Started");
joinPoint.proceed();
logger.info("Execution of : " + joinPoint.getSignature() + " completed");
}
}
クライアントクラス
package com.test;
public class App {
public static void main(String[] args) throws Exception {
ApplicationContext appContext = new ClassPathXmlApplicationContext(
"classpath:/META-INF/spring.xml");
T test=(T) appContext.getBean("test");
test.show();
}
どんな助けでも大歓迎です..