码迷,mamicode.com
首页 > 编程语言 > 详细

Spring(四):面向切面编程AOP

时间:2015-09-09 19:52:40      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

  • 横切关注点:分布于应用中多处的功能

  • 面向切面编程AOP:将横切关注点与业务逻辑相分离


    在使用面向切面编程时,仍在一个地方定义通用功能,但是可以通过声明的方式定义这个功能以何种方式在何处应用,而无需修改受影响的类。

    横切关注点可以被模块化为特殊的类,这些类被称为切面。

好处

  • 每个关注点集中于一处,而不是分散到多处代码中

  • 服务模块更加简洁,因为它们只包含主要关注点的代码,次要关注点被转移到切面中了


1、定义AOP术语

1.1、通知(Advice)

    切面的工作被称为通知。

    通知定义了切面是什么以及何时使用。


Spring切面可以应用的5种类型的通知:

  • Before——在方法被调用之前调用通知

  • After——在方法完成之后调用通知,无论方法执行是否成功。

  • After-returning——在方法成功执行之后调用通知。

  • After-throwing——在方法抛出异常后调用通知。

  • Around——通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。

1.2、连接点(Joinpoint)

    连接点是在应用执行过程中能够插入切面的一个点,这个店可以是调用方法时、抛出异常时、甚至修改一个字段时。

1.3、切点(Pointcut)

    切点有助于缩小切面所通知连接点的范围,切点的定义会匹配通知所要织入的一个或多个连接点。通常使用明确的类名和方法名来指定这些切点,或是利用正则表达式定义匹配的类和方法名来指定这些切点。

1.4、切面(Aspect)

    切面是通知和切点的结合,通知和切点共同定义了关于切面的全部内容——它是什么、在何时和何处完成其功能。

1.5、引入(Introduction)

    引入允许我们向现有的类添加新方法或属性。

1.6、织入(Weaving)

    织入是将切面应用到目标对象来创建新的代理对象的过程。

在目标对象的生命周期里有多个点可以进行织入:

  • 编译期——切面在目标类编译时被织入。这种方式需要特殊的编译器。AspectJ的织入编译器就是以这种方式织入切面的。

  • 类加载期——切面在目标类加载到JVM时被织入。

  • 运行期——切面在应用运行的某个时候被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代理对象,Spring AOP就是以这种方式织入切面的。


2、Spring对AOP的支持

//TODO


Spring(四):面向切面编程AOP

标签:

原文地址:http://my.oschina.net/u/1020238/blog/503967

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!