AOP基本知识总结

什么是AOP?

  通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
  AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,
  AOP可以说也是这种目标的一种实现。

AOP应用范围

  很明显,AOP非常适合开发J2EE容器服务器,目前JBoss 4.0正是使用AOP框架进行开发。
  具体功能如下:
    Authentication 权限
    Caching 缓存
    Context passing 内容传递
    Error handling 错误处理
    Lazy loading 懒加载
    Debugging 调试
    logging, tracing, profiling and monitoring 记录跟踪 优化 校准
    Performance optimization 性能优化
    Persistence 持久化
    Resource pooling 资源池
    Synchronization 同步
    Transactions 事务

  使用AOP可以让我们从一个更高的抽象概念来理解软件系统。
  因为使用AOP结构,现在JBoss 4.0的源码要比JBoss 3.X容易理解多了,
  这对于一个大型复杂系统来说是非常重要的。

  从另外一个方面说,好像不是所有的人都需要关心AOP,它可能是一种架构设计的选择。
  如果选择J2EE系统,AOP关注的上述通用方面都已经被J2EE容器实现了,
  J2EE应用系统开发者可能需要更多地关注行业应用方面aspect。

重温 AspectJ 中几个必须要了解的概念:

  Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
  Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
  Pointcut:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
  Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。

AOP 帮助我们解决了新的问题没有?
  AOP 并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,
  并且使得系统更加健壮,可维护性更好。
  同时,它让我们在进行系统架构和模块设计的时候多了新的选择和新的思路。

参考:
http://www.cnblogs.com/limei/archive/2011/10/9.html

posted @ 2012-10-07 11:53  万法自然~  阅读(228)  评论(0编辑  收藏  举报