zoukankan      html  css  js  c++  java
  • 关于AOP的几个问题

    什么是AOP

    AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

    为什么使用AOP?

    将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。我们把这种行为称为"分散关注" AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中。

    AOP的本质可以理解为"动态代理模式",想想代理模式的作用就更容易理解AOP了,可以把前面写的一篇动态代理封装事务的文章作为例子

    AOP开发过程?

    1、分离关注点:分解需求提取出横切关注点和一般关注点。就一般的系统而言,比较常见的关注点为:日志关注点,权限关注点,事务关注点。 

    2、实现关注点:各自独立地实现关注点,例如日志模块,权限模块。 

    3、组合关注点:即确定在什么时候执行关注点,例如在每个操作的开始需要开启事务,每个操作结束关闭事务。

    我们再来看一下AOP的原理图帮助我们理解AOP的开发过程

    Cross Cutting Concern:横切性关注点,是一种独立服务,它会遍布在系统的处理流程之中

    Aspect:对横切性关注点的模块化

    Advice:对横切性关注点的具体实现

    Pointcut:它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用

    JoinPoint:Advice在应用程序上执行的点或时机,如:Spring只支持方法的JoinPoint,Aspecj可以支持属性的JoinPoint

    Weave:将Advice应用到Target Object上的过程叫织入,如Spring支持的是JDK动态代理

    Target Object:Advice被应用的对象

    Proxy:AOP织入方式之一,如Spring AOP默认使用JDK的动态代理,它的代理是运行时创建;也可以使用CGLIB代理,它的织入方式字节码动态生成;还有Aspecj织入方式:语言扩展

    AOP的适用范围?

    很明显,AOP非常适合开发J2EE容器服务器,Jboss4.0

    具体功能如下:

    Authentication 权限

    Caching 缓存

    Context passing 内容传递

    Error handling 错误处理

    Lazy loading 懒加载

    Debugging  调试

    logging, tracing, profiling and monitoring 记录跟踪 优化 校准

    Performance optimization 性能优化

    Persistence  持久化

    Resource pooling 资源池

    Synchronization 同步

    Transactions 事务

  • 相关阅读:
    eclipse
    一次性验证码
    mybatis。逆向工程
    mybatis02.动态sql
    mybatis01
    plsql
    HDU.2149 Public Sale (博弈论 巴什博弈)
    HDU.1846 Brave Game (博弈论 巴什博弈)
    博弈论快速入门
    HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧)
  • 原文地址:https://www.cnblogs.com/niuchunjian/p/4520213.html
Copyright © 2011-2022 走看看