一、了解AOP
AOP (Aspect Oriented Programming)
AOP是面向切面编程
AOP降低代码耦合性,提高程序的可重用性,提高开发效率
创建使用bean.xml配置文件
二、注解分类和注解AOP
1.切面 :切面一般定义为一个 Java 类, 每个切面侧重于特定的跨领域功能,比如,事务管理或者日志打印等。
2.连接点 :程序执行的某个点,比如方法执行。构造函数调用或者字段赋值等。在 Spring AOP 中,连接点只会有 方法调用 (Method execution)
3.通知 :在连接点要的代码
4.切入点:一个匹配连接点的正则表达式。当一个连接点匹配到切点时,一个关联到这个切点的特定的 通知 (Advice) 会被执行
通知分为:
前置通知
后置通知
异常通知
环绕通知
三、spring AOP的execution注解使用
execution:该指示器用来匹配方法执行连接点,即匹配哪个方法执行如:
@Pointcut("execution(public String aaric.springaopdemo.UserDao.findById(Long))")
四、使用@Acpect实现增加
笔记:
当 Spring IOC 容器侦测到 Bean 配置文件中的 aop:aspectj-autoproxy 元素时, 会自动为与 AspectJ 切面匹配的 Bean 创建代理.
•AspectJ 支持 5 种类型的通知注解:
–@Before: 前置通知, 在方法执行之前执行
–@After: 后置通知, 在方法执行之后执行
–@AfterRunning: 返回通知, 在方法返回结果之后执行
–@AfterThrowing: 异常通知, 在方法抛出异常之后
–@Around: 环绕通知, 围绕着方法执行
Spring AOP 的两种实现方式分别是注解@(基于AspectJ)和XML配置,虽然方式不同,但万变不离其宗,最终都是运用java反射和动态代理技术(这是JDK方式)或者java反射和CGlib(CGlib方式)。这是Spring内部支持的两种方式。