切面类:
package com.atChina.Test6;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
/**
* @Aspect:来自aspectj框架,表示当前类是切面类
* 切面类是用来给业务方法增强功能的类
*/
@Aspect
public class MyAspect {
@After(value="mpt()")
public void myAfter(){
System.out.println("最终通知..总是会被执行..");
}
@Before(value="mpt()")
public void myBefore(){
System.out.println("前置通知.........");
}
/*
* @Pointcut:管理和定义切入点,不是通知注解.如果切面中有多个通知使用相同的切入点表达式
* 可以使用@Pointcut集中定义切入点
* 属性:value, 切入点表达式
* 位置:在自定义的方法上面
*
* 特点:
* 1. 集中定义和管理切入点
* 2. 使用 @Pointcut定义的方法,就是切入点的别名。
* 其他通知注解的value属性可以使用方法名,表示切入点.
*/
@Pointcut(value="execution(* *..SomeServiceImpl.doAfter(..))")
private void mpt(){
// 不需要代码
}
}