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 或者直接写 匹配规则

     

  • 相关阅读:
    爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗?
    每日JS逆向练习之斗鱼登录密码加密,今天你练了吗?
    兄弟们,我打算抠100个网站JS加密代码召唤,一个也跑不掉,这次轮到小虎牙
    这个爬虫JS逆向加密任务,你还不来试试?逆向入门级,适合一定爬虫基础的人
    兄弟,你爬虫基础这么好,需要研究js逆向了,一起吧(有完整JS代码)
    四十一:快速排序(递归)
    第四十次发博不知道用什么标题好
    第三十九次发博不知道发什么好
    第三十八次发博不知道用什么标题好
    第三十七次发博不知道用什么标题好
  • 原文地址:https://www.cnblogs.com/fanzhuangzhuang/p/11236695.html
Copyright © 2011-2022 走看看