Spring AOP 入门学习

原创 2007年10月08日 19:51:00

    尽管用Spring开发了一段时间,但仅仅使用了其IoC容器与MVC功能,对于AOP与事务管理涉猎甚少。
    今天看了一下AOP方面的东西,其描述似乎确实能够解决常见的几个头疼的问题:日志记录、错误处理、与权限控制。这类问题称之为crosscutting需求,是指在一个程序中影响(横切)其它关系的Aspect(横切其它核心关系的部分)。这些关系通常在设计和实现时都不能和系统的剩余部分被清晰地分解出来,从而导致发散的、混乱的或者既发散又混乱的程序。

这个图还是挺形象的。


三个服务CourseService、StudentService以及MiscService都属于服务层,实现应用程序的业务逻辑,而这三个服务都需要安全控制、事务管理以及其他的共同需求等。这些需求与服务相依赖,但又横穿所有的服务。

引用一下夏昕对OOP与AOP比较的描述:


OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。
举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP/OOD的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。
换而言之,OOD/OOP面向名词领域,AOP面向动词领域。
AOP和OOD/OOP并不冲突,我们完全可以在一个应用系统中同时应用OOD/OOP和AOP设计思想,通过OOD/OOP对系统中的业务对象进行建模,同时通过AOP对实体处理过程中的阶段进行隔离处理。即使不是OOD/OOP,而是在传统的POP(面向过程编程)中,AOP也能起到同样的作用。

 

看了几个简单的例子,对如何采用AOP来实现crosscutting需求有了一定的了解,在调用所有符合指定要求的方法时,在适当的地方(方法之前,之后或抛出异常时)加入指定的控制代码,这段控制代码是经过抽象了的,集中的,并能与调用方法完全分离。但甚为浮浅,远远不够。比如对日志处理而言,可以将很多本应分散在不同类中的操作信息放在同一个方法中进行,但如何保证不同操作对应的不同的记录信息呢?

看了一下自己没有采用AOP的解决过程。将Spring的Controller与SimpleFormController的通用行为进行抽象后,权限控制与错误处理都能够集中在一起处理,即使没有采用AOP,但仍然能达到类似的效果,还算不错,但日志记录却完全分散个不同的类中,感觉有些乱,且不好控制,事务处理则完全没有考虑,汗滴了。。。。

再看看吧,试了几个例子再说。 

Spring AOP 学习的好例子 仔细理解一定能学会的!

第一次写博客!心情还是蛮激动的! 虽然水品一般!但是我是知识的传播者!希望能把好的文章分享给大家!       好了,言归正传,开始我们的  spring aop 的开心学习之旅吧!      本文转...
  • u011225629
  • u011225629
  • 2015-04-22 11:11:57
  • 5600

Spring AOP从入门到放弃之概念以及Spring Boot AOP demo

AOP核心概念1、横切关注点对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点2、切面(aspect)-》(通知+切点)类是对物体特征的抽象,切面就是对横切关注点的抽象。 通知+切点 ...
  • chenjianandiyi
  • chenjianandiyi
  • 2017-10-27 14:35:36
  • 371

Spring AOP入门Demo

本篇博客将会一步一步创建一个最简单的例子,来使用Spring的AOP特性,算是一个Spring AOP的入门Demo。作为一个初学者,运行出这么简单的一个Demo也踩了很多的坑。...
  • daguanjia11
  • daguanjia11
  • 2015-10-20 16:37:26
  • 6211

spring框架学习(六)AOP

AOP(Aspect-OrientedProgramming)面向方面编程,与OOP完全不同,使用AOP编程系统被分为方面或关注点,而不是OOP中的对象。    AOP的引入  在OOP面向对象的使用...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2014-03-15 23:36:26
  • 52181

Spring AOP入门——概念及注意点

Spring AOP入门——概念及注意点
  • u012345283
  • u012345283
  • 2014-08-20 09:15:00
  • 2102

Spring学习总结——Spring实现AOP的多种方式

 目录 一、基于XML配置的Spring AOP二、使用注解配置AOP三、AspectJ切点函数四、AspectJ通知注解五、零配置实现Spring IoC与AOP六、示例下载 ...
  • u010987379
  • u010987379
  • 2016-08-08 16:13:26
  • 36503

Spring AOP入门使用详解

AOP入门详解
  • zhglance
  • zhglance
  • 2016-09-09 09:50:45
  • 275

Spring -Aop入门

  • 2011年11月17日 15:44
  • 98KB
  • 下载

Spring学习总结(4)——Spring AOP教程

一、概念 AOP(Aspect Oriented Programming):面向切面编程。 面向切面编程(也叫面向方面编程),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用...
  • u012562943
  • u012562943
  • 2015-11-16 15:35:03
  • 2090

spring-aop学习笔记

一 基本概念 通知(Advice):切面的工作被称为通知。定义了切面是什么以及何时使用。spring切面可以应用5种类型的通知(Before、After、After-retrunning,After-...
  • wendy_fly
  • wendy_fly
  • 2016-02-20 18:12:22
  • 293
收藏助手
不良信息举报
您举报文章:Spring AOP 入门学习
举报原因:
原因补充:

(最多只允许输入30个字)