AOP:
面向切面编程,通过预编译和运行时动态生成的代理类,对一类代码进行增强的操作
核心:
在不影响原有的代码的基础上,对方法进行扩展,减少代码的耦合性
切面 = 切入点表达式 + 通知
1.目标方法:
用户调用实际的业务代码
2.通知
:在切面中扩展目标方法的方法
3.切入点表达式:
相当于是一个if判断 当用户执行目标方法时,如果满足了切入点表达式,则执行通知方法
4.连接点:
当方法满足切入点表达式时,该方法称之为连接点
AOP切入点表达式
1.bean(bean的ID) 按照bean 的id匹配 某一个
2.within(包名.类名) 按类匹配 多个
上述2项都是粗粒度.
3.execution(返回值类型 包名.类名.方法名(参数列表))
方法参数级别: 粒度较细
4.@annotation(注解名称/注解的路径) 按照注解匹配.
通知总类
1).前置通知 在目标方法执行之前执行
2).后置通知 在目标方法执行之后执行
3).异常通知 在目标方法执行之后报异常的
4).最终通知 不管什么时候都要执行的通知
5).环绕通知 在目标方法前后都要执行的通知
总结:
1.前4大通知类型一般用于程序状态<