Spring5应用之AOP概念详解

2023年 10月 1日 46.9k 0

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者!
个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏
当前专栏:Spring5应用专栏_Aomsir的博客

前言

在之前的文章中,我们逐步揭示了静态代理AOP的动态代理额外功能以及切入点等关键概念。通过这些篇章,我们逐渐探究了AOP的四步编程方法,然而,对于AOP的整体概念,我们尚未完全涉猎。继之前的AOP实战经验后,从本篇开始,我将深入带领大家探索和理解AOP的核心思想,希望能助大家在面试或实际应用中更为自信,从众多候选者中脱颖而出

AOP概念

学过C语言的朋友都知道,它主要采用的是面向过程的编程方式,即POP (Procedure Oriented Programming)。而Java,则是一门面向对象的编程语言,即OOP (Object Oriented Programming)。而AOP (Aspect Oriented Programming),则代表了面向切面的编程。
那么,这三者具体是什么呢?

  • OOP (Object Oriented Programming):它的核心是将真实世界的事物抽象成对象,以对象为基本单位进行程序开发。对象之间可以彼此交互、协同工作,从而完成整个程序的构建。OOP强调数据和处理数据的方法的封装。
  • POP (Procedure Oriented Programming):这是一种以函数或过程为基本单位的程序开发方法。它更关注的是程序执行的流程,而不是数据的封装。在这种方法中,数据通常是通过函数参数传递的,程序由一系列函数调用构成。
  • AOP (Aspect Oriented Programming):AOP为我们提供了一种全新的视角,允许我们定义横切关注点,即在多个对象中都可能出现的公共功能(如日志、安全等)。AOP使这些横切关注点与主业务逻辑分离,从而提高代码的可重用性和维护性

切面

切面(Aspect)是面向切面编程(AOP)中的核心概念,它由切入点(Pointcut)和额外功能(Advice)构成。拿Spring的AOP动态代理为例,其核心的组装步骤正是这样的切入点和额外功能的结合。这种结构模式为我们提供了一种机制,通过代理类来为原始类附加额外功能,而不需要修改原始类的代码。

这样,Spring的AOP动态代理实质上是面向切面的编程的实现。其主要优势在于,增强的功能被分离,使得原始类的维护更为简单和清晰。

然而,需要强调的是,尽管AOP提供了一种新的编程范式,它并不意图取代传统的面向对象编程(OOP)。相反,AOP旨在作为OOP的一个补充,帮助我们更高效地处理横切关注点,进而提升代码的整洁度和可维护性



开发步骤

  • 原始类与方法
  • 额外功能(实现MethodInterceptor)
  • 切入点定义
  • 组装切面

总结

经过本篇的深入探讨,我们更为清晰地理解了面向过程编程、面向对象编程以及面向切面编程这三大编程范式。特别地,我们对AOP有了更加全面的把握,从其核心概念、构成要素,到其在Spring中的实际应用与实现。值得注意的是,AOP并不旨在取代传统的OOP,而是提供一种更为灵活、高效的编程方式,使我们能更加轻松地处理共通关注点,优化代码结构。通过整合原始类、额外功能、切入点定义及切面的组装,我们看到了AOP的强大与魅力,期望这些知识能助大家在实际开发中实现更加简洁、高效的代码

参考文献

  • 孙哥孙帅suns说Spring5~学不会Spring? 因为你没找对人
  • Spring官方文档

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论