【AOP】(2)配置

113 阅读1分钟

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 {
}