术语:
切面(aspect): 横切面对象,一般为一个具体类对象(可以借助@Aspect声明),用于封装扩展业务的一个类的对象。
连接点(joinpoint):程序执行过程中某个特定的点,一般指被拦截到的的方法
切入点(pointcut):对连接点拦截内容的一种定义,一般可以理解为多个连接点的结合.
通知(Advice):在切面的某个特定连接点上执行的动作(扩展功能),例如around,before,after等,切面扩展业务中的一个操作(方法)。
底层:
1)假如目标对象(被代理对象)实现接口,则底层默认采用JDK动态代理机制为目标对象创建代理对象(目标类和代理类会实现共同接口)
2)假如目标对象(被代理对象)没有实现接口,则底层默认采用CGLIB代理机制为目标对象创建代理对象(默认创建的代理类会继承目标对象类型)。
切面编程原则:
AOP就是要在基于OCP(开闭原则)在不改变原有系统核心业务代码的基础上动态添加一些扩展功能并可以控制对象的执行。
注解:
@Aspect 注解用于标识此类为一个AOP横切面对象
@Pointcut 注解用于定义本类中的切入点。
@Before 用于定义一个前置通知(满足切入点表达式的核心业务方法执行之前要执行的一个操作)
@After 用于定义一个后置通知(满足切入点表达式的核心业务方法执行之后要执行的一个操作)
@Order(1)定义优先级,数字越小优先级越高,先执行
@annotaion应用于方法级别,实现细粒度的控制
切面编程要点研究
最新推荐文章于 2023-11-06 14:58:35 发布