zoukankan      html  css  js  c++  java
  • 面向切面编程(AOP)简介

        在软件中,有些行为对于大多数应用都是通用的。日志,安全和事务管理几乎是所有软件都需要的。他们是否可以主动的参与呢,如果让应用程序只关注与自己所针对的业务领域问题,而其他的问题有其他应用对象来处理。是否属于一种封装呢。最近学习了spring的一些基本原理,在软件开发中,分布于应用中多处的功能被称为横切关注点(cross-cutting concerns)。通常,这些横切关注点从概念上是与应用的业务逻辑相分离的。将这些横切关注点与业务逻辑相分离是面向切面编程所解决的。



    关于AOP的一些定义:

    通知(Advice)



    切面的工作被称为通知,且有目标,有自己需要完成的工作。

    spring有五种类型的通知:

    1.before   在方法被调用之前
    2.after    在方法被调用之后
    3.after-returning    在方法成功执行之后
    4.after-throwing    在方法抛出异常之后
    5.around    通知包裹了被通知的方法,在被通知方法调用之前和调用之后执行自定义的行为


    连接点(Joinpoint)


    连接点是在应用执行过程中能够插入切面的一个点,切面代码可以利用这些点插入到应用的正常流程之中,并添加新

    的行为。Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:

    Aspecj可以支持


    切点(Poincut)


         切点有助于缩小切面所通知连接点的范围。它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用。


    切面(Aspect)


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

    Apring 对 AOP的4种支持:



    1.基于代理的经典AOP

    2.@AspectJ注解驱动的切面

    3.纯POJO切面

    4.注入式AspectJ切面


         前3个都是spring基于代理的AOP变体,因此,spring对AOP的支持局限于方法拦截。如果AOP需求超过了简单方法拦截的范畴,那么就使用最后一个方法,利用Spring的依赖注入把Bean注入到AspectJ切面中。

     


    总结:


          下面的博客将会用自己敲的小例子来讲讲对于AOP的理解,对于另一种AOP的实现AspectJ,是如何与SpringAOP相结合的,等着进一步的了解。

  • 相关阅读:
    非线性方程(组):高维方程解法
    非线性方程(组):一维非线性方程(二)插值迭代方法 [MATLAB]
    非线性方程(组):一维非线性方程(一)二分法、不动点迭代、牛顿法 [MATLAB]
    非线性方程(组):计算基本理论
    常微分方程初值问题:多步预测-修正方法 [MATLAB]
    你会使用super()吗?你确定你了解它吗?
    Django简介
    Web框架的原理
    Django ORM 中的批量操作
    Python的切片
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/8315744.html
Copyright © 2011-2022 走看看