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 事务

  • 相关阅读:
    【译】常用网络端口号列表
    使用Simian进行重复代码检测
    使用GCOV进行代码覆盖率统计
    AFL Fuzz安装及完成一次简单的模糊测试
    数据可视化概述
    完成下方的 which_date() 函数,并返回某一起始时间后特定一段时间的日期
    linux用户不在sudoers文件中
    linux /lib64/libc.so.6: version `GLIBC_2.17′ not found
    web api 2.0 上传文件超过4M时,出现404错误
    Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.7 + Openssl 1.1.1d + Mariadb 10.3.7 + Nginx 1.16.1 + Asp.net. Core 2 )
  • 原文地址:https://www.cnblogs.com/niuchunjian/p/4520213.html
Copyright © 2011-2022 走看看