Spring AOP原理与生活(二)

AOP PK OOP

基本理解:

        AOP(Aspect-Oriented Programming,面向对象编程),也可以是说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善。

        OOP侧重点:纵向技术即核心关注点(软件的业务流程)

         AOP侧重点:横切技术即核心关注点(业务处理流程)和横切关注点(与业务关系不大,但是很重要的部分)

         基本关系

很多人在初次接触AOP的时候可能会说,AOP能做到的,一个定义良好的OOP的接口也一样能够做到,我想这个观点是值得商榷的。AOP和定义良好的OOP的接口可能说都是用来解决问题并且实现需求中的横向问题的方法,这是OOP所无法避免的,并且一旦接口不修改的时候,所有事情就会变的一团糟;但是AOP不会这样,你只需修改相应的aspect,再重新组织即可。当然AOP也绝不会代替OOP。核心的需求仍然会有OOP来加以实现,而AOP将会和OOP整合起来,形成一套互补的体系。

AOP功能

         Spring AOP的主要功能:日志记录、性能统计、安全控制,事务处理,异常处理。

         主要意图:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务。在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(如审计和事务管理)进行内聚性的开发。应用对象只实现它们应该做的—-完成业务逻辑—–仅此而已。它们并不负责其他系统级关注点,例如日志管理或事务管理。可以更好的将未来不应该粘合在一起的功能进行分离。

Spring AOP的优势

          借助于Spring  AOP,Spring IoC能够很方便的使用到非常健壮、灵活的企业级服务,是因为Spring AOP能够提供几方面的优势:

1.             允许开发者使用声明式业务服务,比如事务服务,安全性服务,EJB开发者都知道,EJB组件能够使用J2EE容器提供的声明式服务,但是这些服务要借助于EJB容器,而Spring AOP却不需要EJB容器,借助于Spring的事务抽象矿建就可以这些服务。

2.             开发者可以开发满足业务需求的自定义切面

3.             开发SpringAOPAdvice很方便。因为这些AOP Advice仅是POJO类,借助于Spring提供的ProxyFactoryBean,能够快速的搭建SpringAOP Advice

AOP术语解析

            例图:

《Spring AOP原理与生活(二)》

             解析:

• Aspect:方向   

– 我们将业务组件的事务管理部分提取出来,被提取的层面就称为“方面”,如图中的事务管理。方面的意义在于将业务逻辑中复杂问题分离成不同的层面,使其实现统一集中的管理

• Advice:劝告

– 在特定的连接点执行的动作。如在执行execute()方法前的预处理,在执行完execute()方法后的后处理

• Pointcut:切点

– 连接点的集合,指定在何时引发通知。如事务例子中配置了所有execute.*的方法为切入点

• JoinPoint:连接点

– 程序在执行过程中明确的点,如execute()方法

• Weave:织入

– 将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入

• Target Object

– 包含连接点的对象,也称为代理的对象。如图中的业务组件。

• Proxy

– Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理

接上一篇Spring AOP源于生活的原理(一)

想要了解更多Spring请从(Spring程序员的春天)开始

    原文作者:AOP
    原文地址: https://blog.csdn.net/qiulongtianshi/article/details/7748314
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞