pom文件引入
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
spring.xml配置aop:aspectj-autoproxy
<context:component-scan base-package="com.example.demo02"></context:component-scan>
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
编写类和增强类添加注解放置bean容器中,增强类加上aspectj注解,增强方法上加入after注解,关键在表达式
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
(2)语法结构: execution([权限修饰符] [返回类型] [类全路径] 方法名称 )
举例 1:对 com.atguigu.dao.BookDao 类里面的 add 进行增强
execution(* com.atguigu.dao.BookDao.add(…))
举例 2:对 com.atguigu.dao.BookDao 类里面的所有的方法进行增强execution(* com.atguigu.dao.BookDao.* (…))
举例 3:对 com.atguigu.dao 包里面所有类,类里面所有方法进行增强execution(* com.atguigu.dao.. (…))
package com.example.demo02;
import org.springframework.stereotype.Component;
@Component
public class AopTest {
public void say(){
System.out.println("喝水");
}
}
package com.example.demo02;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class AopZengqiang {
@After(value = "execution(public void com.example.demo02.AopTest.say())")
public void Zengqiang(){
System.out.println("AOP添加增强方法");
}
}