专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Spring面向切面编程 AOP

什么是AOP

  • Aspect Oriented Program ⾯向切⾯编程

在不改变原有逻辑上增加额外的功能,⽐如解决系统层⾯的问题,或者增加新的功能

例如,在一个地方买商品,买的核心业务逻辑,需要做权限校验(是否是用户,是否登录),我们一般是在拦截器去做,拦截器也是AOP思想的体现,所以就可以在下单之前做一个权限控制而不是在service层去做。

  • 场景
    • 权限控制
    • 缓存
    • 日志处理
    • 事务控制
  • AOP思想把功能分两个部分,分离系统中的各种关注点
  • 核⼼关注点
    • 业务的主要功能
      • 例如下单
  • 横切关注点
    • ⾮核⼼、额外增加的功能
      • 例如下单前的权限校验、日志等
  • 好处
    • 减少代码侵入,解耦
    • 可以统⼀处理横切逻辑
    • ⽅便添加和删除横切逻辑

AOP面向切面编程的核心概念

  • 横切、通知、连接点、切⼊点、切⾯

81_1.png

  • 横切关注点

对哪些⽅法进⾏拦截,拦截后怎么处理,这些就叫横切关注点,比如 权限认证、⽇志、事物

  • 通知 Advice

在特定的切⼊点上执⾏的增强处理,有5种通知。⽐如你需要记录⽇志,控制事务 ,提前编写好通⽤的模块,需要的地⽅直接调⽤

  • 连接点 JointPoint

要⽤通知的地⽅,业务流程在运⾏过程中需要插⼊切⾯的具体位置,⼀般是⽅法的调⽤前后,全部⽅法都可以是连接点,只是概念,没啥特殊

  • 切⼊点 Pointcut

不能全部⽅法都是连接点,通过特定的规则来筛选连接点,就是Pointcut,选中那⼏个你想要的⽅法。在程序中主要体现为书写切⼊点表达式(通过通配、正则表达式)过滤出特定的⼀组JointPoint连接点。过滤出相应的 Advice 将要发⽣的joinpoint地⽅

  • 切⾯ Aspect

通常是⼀个类,⾥⾯定义 切⼊点+通知,定义在什么地⽅、什么时间点、做什么事情,通知advice指明了时间和做的事情(前置、后置等),切⼊点pointcut指定在什么地⽅⼲这个事情,web接⼝设计中,web层->⽹关层->服务层->数据层,每⼀层之间也是⼀个切⾯,对象和对象,⽅法和⽅法之间都是⼀个切⾯

  • ⽬标 target

⽬标类,真正的业务逻辑,可以在⽬标类不知情的条件下,增加新的功能到⽬标类的链路上

  • 织⼊ Weaving

把切⾯(某个类)应⽤到⽬标函数的过程称为织⼊

  • AOP代理

AOP框架创建的对象,代理就是⽬标对象的加强,Spring中的AOP代理可以是JDK动态代理,也可以是CGLIB代理

文章永久链接:https://tech.souyunku.com/27250

未经允许不得转载:搜云库技术团队 » Spring面向切面编程 AOP

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们