美文网首页
Spring之AOP精简总结

Spring之AOP精简总结

作者: WinkTink | 来源:发表于2019-05-23 16:51 被阅读0次

1. AOP概念

        Aspect-OrientedProgramming,面向方面编程

2. 实现方式

        2.1 采用声明的方式来实现(基于XML)

        2.2 采用注解的方式来实现(基于AspectJ)

3. AOP术语

        切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。在Spring AOP中,切面可以使用基于模式或者基于@Aspect注解的方式来实现。

        连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行。

        通知(Advice):在切面的某个特定的连接点上执行的动作。其中包括了“around”、“before”和“after”等不同类型的通知(通知的类型将在后面部分进行讨论)。许多AOP框架(包括Spring)都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。

        切入点(Pointcut):匹配连接点的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。

        引入(Introduction):用来给一个类型声明额外的方法或属性(也被称为连接类型声明(inter-type declaration))。Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。例如,你可以使用引入来使一个bean实现IsModified接口,以便简化缓存机制。

        目标对象(Target Object):被一个或者多个切面所通知的对象。也被称做被通知(advised)对象。既然Spring AOP是通过运行时代理实现的,这个对象永远是一个被代理(proxied)对象。

        AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约(例如通知方法执行等等)。在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。

        织入(Weaving):把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

4.  实现AOP的技术

        一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;

实现动态代理步骤:

A. 创建一个实现接口InvocationHandler的类,他必须实现invoke方法。

B.创建被代理的类以及接口。

C.通过Proxy的静态方法newProxyInstance(ClassLoader loader, Class<?>[]interfaces, InvocationHandler handler)创建一个代理。

D.通过代理调用方法。

        二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

5. AOP主要应用场景有

        1.Authentication 权限

        2.Caching 缓存

        3.Context passing 内容传递

        4.Error handling 错误处理

        5.Lazy loading懒加载

        6.Debugging 调试

        7.logging, tracing, profiling and monitoring 记录跟踪优化校准

        8.Performance optimization 性能优化

        9. Persistence 持久化 

        10.Resource pooling资源池

        11.Synchronization同步

        12.Transactions 事务

相关文章

网友评论

      本文标题:Spring之AOP精简总结

      本文链接:https://www.haomeiwen.com/subject/gxkuzqtx.html