建网站源码建站详解,网站建设未来发展的趋势,光谷做网站推广,微网站首页模板AOP是针对面向对象编程的一种补充#xff0c;有时使用面向对象不能很好完成一些额外的功能业务时#xff0c;可以采用AOP来进行补充。切面编程的目的就是为了将业务目标进行而外的增强或者扩展。Spring中的AOP是基于JDK动态代理和CGLIB动态代理实现的。
应用场景
日志操作有时使用面向对象不能很好完成一些额外的功能业务时可以采用AOP来进行补充。切面编程的目的就是为了将业务目标进行而外的增强或者扩展。Spring中的AOP是基于JDK动态代理和CGLIB动态代理实现的。
应用场景
日志操作
可以在业务方法前后进行日志的记录不需要每个业务方法中都编写重复的代码
权限管理
可以在调用目标方法前确定是否有权限
事务管理
可以在调用业务方法前开启事务方法执行完成后提交事务
AOP术语
切面Aspect
切面是用于编写切面逻辑的一个类这个类很类似于JDK动态代理中的回调处理器或者cglib中的方法拦截器主要就是将需要增强目标对象的功能代码编写在这个类中而这些功能增强的代码就是切面逻辑。
通知/增强Advice
增强就是对目标行为植入额外的逻辑代码从而增强原有的功能。增强分为五种类型
1前置通知在目标方法调用之前执行
2后置通知在目标方法正确返回之后执行
3环绕通知在目标方法调用前后执行
4异常通知当目标方法抛出异常时执行并且不会执行后置通知
5最终通知不管目标方法有无异常都会执行
切入点Pointcut
切入点类似一个切入的坐标目的就是要找到目标对象的哪些方法进行切入。切入点可以使用表达式进行描述。
连接点Joinpoint
目标对象的方法被切入的方法就称之为连接点一个切入点可以对应目标对象的的多个连接点。
代理Proxy
在运行时动态创建的对象称之为代理对象负责调用目标对象的方法并执行增强功能。
目标Target
被代理的对象就是目标对象。
织入Weaver
将切面中的增强逻辑应用到目标具体的连接点上并产生代理的过程称之为织入。
因此通常描述为“将通知织入到具体的目标”。
织入的时机可以分为以下几种 类加载时织入需要特殊的类加载器LTW 编译时织入需要特殊的编译器CTW 运行时织入通常使用JDK或者CGLIB在程序运行创建代理对象 spring就是基于运行时织入的。注意spring仅仅只是用到了AspectJ的切入点表达式和注解但并没有使用AspectJ的类加载和编译时织入功能而是使用JDK和CGLIB在运行时生成代理对象。