注意:不惊动原始设计
一、部署依赖
AOP开发默认导入
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency>
二、具体步骤
@Aspect 告诉Spring 这个类是aop
(1)注意Pointcut后的格式
(2)注意aop(){} 是一个空的方法体,后面不加分号
@Component
@Aspect
public class MyAdvice {//4 定义切入点@Pointcut("execution(void com.itheima.dao.BookDao.update())")private void aop(){}//5绑定切入点和共性功能@Before("pt()")public void method(){System.out.println(System.currentTimeMillis());}
}
之后在SpringConfig类需要
@EnableAspectJAutoProxy
public class SpringConfig {
}
开启Spring对AOP注解驱动的支持
三、AOP的切入表达式
四、通知类型
环绕通知:
通过ProceedingJoinPoint 对象对原始连接点进行调用
此返回值为Object
五、通知获取数据
@Before("pt()")public void before(JoinPoint jp){Object[] args = jp.getArgs();System.out.println(Arrays.toString(args));System.out.println("before advice");}
前置通知和后置通知获取方法中参数的方式一样,通过JoinPoint对象来获取即可,获取到的类型是Objtct[]