一、面向切面编程简介:
在调用某些类的方法时,要在方法执行前或后进行预处理或后处理;预处理或后处理的操作被封装在另一个类中。如图中,UserService类在执行addUser()或updateUser方法前开启事务,执行完后要提交事务;而几乎所有数据库操作都是如此,那么就可以将事务操作的方法提取出封装到一个类里。然后再利用代理类进行处理(目标类方法增强),返回代理类对象
二、AOP相关术语
Target:目标类,需要被增强的类。
JoinPoint:连接点,目标类上需要被增强的方法。(这些方法可以被增强,也可能不增强)。
PointCut:切入点,被增强的连接点(已经增强了)。切入点术语特殊的连接点
Advice:增强/通知,增强的方法。
weaving:织入,将切入点和通知结合,生成代理类过程。
Proxy:代理类。
Aspect:切面,切入点和通知结合形成的面
三、JDK动态代理模拟AOP
1、项目结构(接口+目标类+切面类+代理类+测试类)
2、新建接口UserService
package hjp.springAOP.jdkProxy; public interface UserService { void addUser(); void updateUser(); }