zoukankan      html  css  js  c++  java
  • Spring AOP

    Spring AOP

    AOP, Aspect Oriented Programming, 面向切面编程。它是OOP的一种有效补充。

    AOP与OOP一样,是一种编程的理念,而 AspectJ组件是实现了AOP理念的,SpringAOP整合了aspectJ组件,所以,SpringAOP 可以帮助我们改进代码,它能够在不改变原有业务逻辑的基础上,动态地给目标代码添加“新的功能",而这些功能就是“切面”, 这种编程的思考模式就是 面向切面编程。

    一般是“共性”的辅助性功能,做成“切面”,如:日志, 安全,认证,授权,事务等等。

    Spring AOP的核心概念

    1. Aspect, 切面,它是AOP的核心概念,不是业务逻辑,而是共性,它相当于 Advice + Pointcut

    2. Advice, 通知,它是指切面要添加的共性功能的代码载体,是程序员要表达述求的类型,比如: 要添加日志功能,则我们需要开发一个 LogAdvice 类,要添加事务功能,则我们要开发 TransactionAdvice类,等....

    3. PointCut, 切入点,它是指Advice要被织入到目标对象的匹配规则【match pattern】,它有多个连接点[JointPoint]组成,如下:

      • before, 在目标方法执行之前

      • after, 目标方法执行之后,是在目标方法已经返回

      • afterThrowing, 目标方法出现异常时,在catch块执行

      • afterReturning, 目标方法中的finally块执行【不一定要出现异常】

      • around, 以上4个综合体

    4. JoinPoint, 连接点,也就是PointCut匹配到目标对象的方法后,在方法的哪个执行时间切入的连接点。

    5. Weave,织入的动作,是一个动词,指的是Spring AOP 是如何把切面“织入”到目标对象,本质是基于代理来实现的,SpringAOP支持两种代理模式:

      • 基于JDK自带的动态代理机制,也就是java.lang.reflect.Proxyjava.lang.reflect.InvocationHandler ,这种机制有一个前提,就是目标对象一定要有实现的接口。

      • 基于第三方提供的代理库叫 cglib,它是基于字节码增加的一个代理库,它的功能丰常强大,任何的对象的都可以通过它来产生代理。

    SpringAOP的使用

    1. 开发 Advice 类型, 当做一个Bean来管理,所以需要打上 @Component 注解

    2. 指定匹配规则,语法有多种

    3. 要开启AOP

    AOP相关的注解

    1. @EnableAspectJAutoProxy //开启AOP的动态代理

    2. @Aspect 表示此类是一个切面,要配合 @Component 使用

    3. @Order 表示多个切面的优先顺序,数据越小,优先级越高

    4. @Pointcut 用来制定匹配的规则,它的语法:

      execution(修饰符 * 包名.类名|*.*|方法名.(..|*,*))
    5. @Before 连接点,它要引用 @Pointcut 或者直接写 匹配规则

    6. @After 连接点,它要引用 @Pointcut 或者直接写 匹配规则

    7. @AfterThrowing, 连接点,它要引用 @Pointcut 或者直接写 匹配规则

    8. @AfterReturning 连接点,它要引用 @Pointcut 或者直接写 匹配规则

    9. @Around, 连接点,它要引用 @Pointcut 或者直接写 匹配规则

     

  • 相关阅读:
    [置顶] java得到前一个月的年月日时分秒
    Windows 8.1 Preview的新功能和新API
    oracle保证读一致性原理
    10161
    Qt国际化
    使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
    Haxe2.10到Haxe3,NME到OpenFL的迁移备忘
    设置RichEdit相关颜色说明
    使用MFC CImage类绘制PNG图片时遇到的问题
    把网球计分招式重构到状态模式
  • 原文地址:https://www.cnblogs.com/fanzhuangzhuang/p/11236695.html
Copyright © 2011-2022 走看看