`
com_xpp
  • 浏览: 354138 次
社区版块
存档分类
最新评论

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术语解析

例图:


解析:

• Aspect:方向

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

• Advice:劝告

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

• Pointcut:切点

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

• JoinPoint:连接点

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

• Weave:织入

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

• Target Object

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

• Proxy

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

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

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



分享到:
评论

相关推荐

    Spring攻略(第二版 中文高清版).part1

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    Spring攻略(第二版 中文高清版).part2

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    最新Java面试宝典pdf版

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    Java面试宝典2010版

    20、什么是spring的IOC AOP 21、STRUTS的工作流程! 22、spring 与EJB的区别!! 八. 软件工程与设计模式 1、UML方面 2、j2ee常用的设计模式?说明工厂模式。 3、开发中都用到了那些设计模式?用在什么场合? ...

    Java面试笔试资料大全

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    Java面试宝典2012版

    一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 ...20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 ...

    Java面试宝典2012新版

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    JAVA面试宝典2010

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    Java面试宝典-经典

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    java面试题大全(2012版)

    20、什么是spring的IOC AOP 126 21、STRUTS的工作流程! 126 22、spring 与EJB的区别!! 126 八. 软件工程与设计模式 126 1、UML方面 126 2、j2ee常用的设计模式?说明工厂模式。 126 3、开发中都用到了那些设计...

    java面试宝典2012

    20、什么是spring的IOC AOP 137 21、STRUTS的工作流程! 137 22、spring 与EJB的区别!! 137 八. 软件工程与设计模式 138 1、UML方面 138 2、j2ee常用的设计模式?说明工厂模式。 138 3、开发中都用到了那些设计...

    Java 面试宝典

    一. Java 基础部分............................................................................................................43、Java 中的异常处理机制的简单原理和应用。 .....................................

Global site tag (gtag.js) - Google Analytics