Java中after注解_Spring(12):使用注解(@AfterThrowing/@After/@Around)实现AOP异常增强与实例...
2017/12/31
【1】異常拋出增強:
在包(com\smbms\AopLog)新建一個ErrorLogger.java:
package com.smbms.AopLog;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class ErrorLogger {
private static final Logger log = Logger.getLogger(UserserviceLogger.class);
@AfterThrowing(pointcut="execution(* com.smbms.pojo..*.*(..))",throwing="e")
public void afterthrowing(JoinPoint jp,RuntimeException e){
log.error(jp.getSignature().getName()+" ++++++*****++++ method exception happens!!! ++++++*****++++: "+ e);
}
}
解釋:
1、@AfterThrowing 注解;
【2】最終增強:
在包(com\smbms\AopLog)新建一個AfterLogger.java:
package com.smbms.AopLog;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
@Aspect
//最終增強
public class AfterLogger {
private static final Logger log = Logger.getLogger(UserserviceLogger.class);
@After("execution(* com.smbms.pojo..*.*(..))")
public void after(JoinPoint jp){
log.info(jp.getSignature().getName()+"+++ method excute end!++");
}
}
解釋:
1、@After注解;
【3】環繞增強:
在包(com\smbms\AopLog)新建一個AroundLogger.java:
package com.smbms.AopLog;
import java.util.Arrays;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class AroundLogger {
private static final Logger log = Logger.getLogger(UserserviceLogger.class);
@Around("execution(* com.smbms.pojo..*.*(..))")
public Object aroundLogger(ProceedingJoinPoint jp) throws Throwable {
log.info("***UserserviceLogger*********before:調用了"+jp.getTarget()+" 的"+jp.getSignature().getName()
+" 方法。方法入參:"+Arrays.toString(jp.getArgs()));
try{
Object result = jp.proceed();
log.info("調用了 "+jp.getTarget()+" 的 "+jp.getSignature().getName()
+" 方法。");
return result;
}catch(Throwable e){
log.error(jp.getSignature().getName()+" Exception...方法發生異常: "+e);
throw e;
}finally{
log.info(jp.getSignature().getName()+" ENDING.....方法執行結束");
}
}
}
解釋:
2、聲明ProceedingJoinPoint 類型參數可以獲取連接點的信息;
測試方法還在研究,因為異常發生時,控制臺就不會輸出,所以稍后再完善該博文。
總結
以上是生活随笔為你收集整理的Java中after注解_Spring(12):使用注解(@AfterThrowing/@After/@Around)实现AOP异常增强与实例...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现行程长度编码,java 实现
- 下一篇: ZZULIOJ 1085: 求奇数的乘积