1、导入坐标(pom.xml)
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
2、制作 连接点(原始方法)
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println(System.currentTimeMillis());
System.out.println("book dao save ...");
}
public void update(){
System.out.println("book dao update ...");
}
}
3、制作 通知、通知类(共性方法)
public class MyAdvice {
public void method(){
System.out.println(System.currentTimeMillis());
}
}
4、在 通知类 中,定义 切入点 => 切面(匹配 共性方法 和 切入点)
-
@Component:通知类必须配置成Spring管理的bean -
@Aspect:设置当前类为切面 -
@Pointcut:设置切入点(匹配到 原始方法) -
@Before:前置通知:设置在切入点pt()的前运行 共性方法
例,先执行共性功能,再执行切入点(匹配到 连接点):
@Component
@Aspect
public class MyAdvice {
@Pointcut("execution(void com.itheima.dao.BookDao.update())")
private void pt(){}
//设置在切入点pt()的前面运行当前操作(前置通知)
@Before("pt()")
public void method(){
System.out.println(System.currentTimeMillis());
}
}
5、开启Spring对AOP注解驱动支持
@EnableAspectJAutoProxy:开启注解开发AOP功能
//SpringConfig.java
@Configuration
@ComponentScan("com.itheima")
@EnableAspectJAutoProxy
public class SpringConfig {
}