Spring切⾯类注解
Spring 切⾯类注解
① 在类上使⽤ @Component 注解 把切⾯类加⼊到IOC容器中
② 在类上使⽤ @Aspect 注解 使之成为切⾯类
/**
* ⽇志切⾯
*
* @author zhaoshuiqing<br>
* @date 2019年6⽉14⽇下午3:03:29
*/
@Component
@Aspect
public class LoggingAspect {
//现在想在实现类中的每个⽅法执⾏前、后、以及是否发⽣异常等信息打印出来,需要把⽇志信息抽取出来,写到对应的切⾯的类中 LoggingAspect.java 中    //要想把⼀个类变成切⾯类,需要两步,
//①在类上使⽤ @Component 注解把切⾯类加⼊到IOC容器中
//②在类上使⽤ @Aspect 注解使之成为切⾯类
/**
* 前置通知:⽬标⽅法执⾏之前执⾏以下⽅法体的内容
* @param jp
*/
@Before("execution(* com.svse.aop.*.*(..))")
public void beforeMethod(JoinPoint jp){
String methodName =jp.getSignature().getName();
System.out.println("【前置通知】the method 【" + methodName + "】 begins with " + Arrays.Args()));
}
spring ioc注解/**
* 返回通知:⽬标⽅法正常执⾏完毕时执⾏以下代码
* @param jp
* @param result
*/
@AfterReturning(value="execution(* com.svse.aop.*.*(..))",returning="result")
public void afterReturningMethod(JoinPoint jp, Object result){
String methodName =jp.getSignature().getName();
System.out.println("【返回通知】the method 【" + methodName + "】 ends with 【" + result + "】");
}
/**
* 后置通知:⽬标⽅法执⾏之后执⾏以下⽅法体的内容,不管是否发⽣异常。
* @param jp
*/
@After("execution(* com.svse.aop.*.*(..))")
public void afterMethod(JoinPoint jp){
System.out.println("【后置通知】this is a ");
}
/**
* 异常通知:⽬标⽅法发⽣异常的时候执⾏以下代码
*/
@AfterThrowing(value="execution(* com.qcc.beans.aop.*.*(..))",throwing="e")
public void afterThorwingMethod(JoinPoint jp, NullPointerException e){
String methodName = jp.getSignature().getName();
System.out.println("【异常通知】the method 【" + methodName + "】 occurs exception: " + e);
}
/**
* 环绕通知:⽬标⽅法执⾏前后分别执⾏⼀些代码,发⽣异常的时候执⾏另外⼀些代码
* @return
*/
/
*@Around(value="execution(* com.svse.aop.*.*(..))")
public Object aroundMethod(ProceedingJoinPoint jp){
String methodName = jp.getSignature().getName();
Object result = null;
try {
System.out.println("【环绕通知中的--->前置通知】:the method 【" + methodName + "】 begins with " + Arrays.Args()));        //执⾏⽬标⽅法
result = jp.proceed();
System.out.println("【环绕通知中的--->返回通知】:the method 【" + methodName + "】 ends with " + result);
} catch (Throwable e) {
System.out.println("【环绕通知中的--->异常通知】:the method 【" + methodName + "】 occurs exc
eption " + e);
}
System.out.println("【环绕通知中的--->后置通知】:-----------------end.----------------------");
return result;
}*/
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。