随笔 - 303  文章 - 0  评论 - 3  阅读 - 15万

Spring核心思想之 AOP:基础概念及注解式AOP初体验

  对AOP的理解开始是抽象的,看到切点的匹配方式其实与正则表达式性质大致一样就基本了解AOP是基本是个什么作用了。只是整个概念更抽象,需要具化理解。下图列表是AOP相关概念解释,可能也比较抽象^_^

    1)连接点joinPoint:每个service方法的特色时机点都是连接点,是候选点之一。本质是一个关注点的模块化,这个关注点可能会横切多个对象。

    2)切入点PointCut:用户定位真正感兴趣的方法。

    3)增强通知Advice:横切逻辑+方位信息(具体哪种连接点),可以有前置、后置、返回后、环绕、异常增强类型。

    4)目标对象target:

    5)代理对象Proxy:它指的是⼀个类被AOP织⼊增强后,产⽣的代理类即代理对象。

    6)织入Weaving:它指的是把增强应⽤到⽬标对象来创建新的代理对象的过程。spring采⽤动态代 理织⼊,⽽AspectJ采⽤编译期织⼊和类装载期织⼊。

    7)切面Aspect:切面=切入点+增强=切入点+横切逻辑+方位信息。

    个人想象理解AOP:一个正在运行中的项目类似于长江中奔腾的江水,现在要在中间架桥()。AOP的作用就是定位哪个方位,怎么架桥,根据条件架几座桥,是大桥还是小桥。

   比如:一个log日志针对系统中的某个特定接口方法,这个方法在系统中广泛实现。如果每个实现的方法都自己添加这个log,那不仅增加开发难度,后续维护的工作量会更复杂。那么AOP切面编程就是一个相当契合的解决方法,一个开发维护也方便。

   xml配置示例:

                

  图中每个关于aop的属性都很重要也好理解,对pointcut中方法进行printLog方法增强。这个方法在切面id为logUtil中。

  实际切点pointcut个人理解本质就是一个正则表达式,了解Spring如何解析这个表达式就可以准确写出想要的系统效果。在Spring 配置概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中简单介绍了AOP相关的注解配置,下面简单示例:

    1)添加Spring AOP支持及AspectJ依赖

                

    2)使用方法规则拦截(等价的两种写法)

      Bean定义:

                

       Aspect定义:

                

      测试方法:

                

       测试结果:

                

    3)使用自定义注解类拦截

      自定义拦截注解@Action注解:

                

      被拦截类:

                

      Aspect类定义:

                

       测试结果:

                

     综合配置类:

                    

posted on   池塘里洗澡的鸭子  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示