aop:面向切面编程
采用的是横向抽取的机制,取代了传统的继承体系重重复性代码的变成方式
aop的思想是:
基于代理的思想,对原来目标对象,创建代理类,在不改原对象代码情况下,通过代理对象,调用增强的功能,从而对原有业务的方法进行增强。
aop的应用场景:
记录日志:
监控方法的运行时间
权限控制
缓存优化
事务管理(调用方法前开启事务,调用方法之后提交或者回滚事务 关闭事务)
aop的编程的两种方式:
第一,基于xml的方式
第二,基于AspectJ的方式
AOP相关的术语
Aspect(切面):
是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容---他的功能,在何时和何地完成其功能。
joinpoint(连接点):
所谓的连接点是指那些被拦截的点.在spring中,这些点指的是方法,因为spring指支持方法类型的连接点。
Advice(通知):
通知定义了切面的“内容” 和 “什么地方”; 切入点就定义了“什么地方”、
所谓的通知是指拦截到joinpoint之后所要做的事情,就是通知。 通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
Target(目标对象):
代理的目标对象
weaving(织入):
是指把切面应用到目标对象来创建新的代理对象的过程。切面在指定的连接点织入到目标对象。(说白了就是把需要添加的代码添加到指定的方式上面 在不修改原代码的情况下)
Introduction(引介):
在不修改类代码的前提下,introduction,可以在运行期间为类动态地添加一些方法和字段。
<groupId>org.example</groupId>
<artifactId>spring-aop</artifactId>
<version>1.0-SNAPSHOT</version>
<description>study spring-aop</description>