作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者!
个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客
当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客
在之前的文章中,我们逐步揭示了静态代理、AOP的动态代理、额外功能以及切入点等关键概念。通过这些篇章,我们逐渐探究了AOP的四步编程方法,然而,对于AOP的整体概念,我们尚未完全涉猎。继之前的AOP实战经验后,从本篇开始,我将深入带领大家探索和理解AOP的核心思想,希望能助大家在面试或实际应用中更为自信,从众多候选者中脱颖而出
学过C语言的朋友都知道,它主要采用的是面向过程的编程方式,即POP (Procedure Oriented Programming)。而Java,则是一门面向对象的编程语言,即OOP (Object Oriented Programming)。而AOP (Aspect Oriented Programming),则代表了面向切面的编程。
那么,这三者具体是什么呢?
横切关注点,即在多个对象中都可能出现的公共功能(如日志、安全等)。AOP使这些横切关注点与主业务逻辑分离,从而提高代码的可重用性和维护性切面(Aspect)是面向切面编程(AOP)中的核心概念,它由切入点(Pointcut)和额外功能(Advice)构成。拿Spring的AOP动态代理为例,其核心的组装步骤正是这样的切入点和额外功能的结合。这种结构模式为我们提供了一种机制,通过代理类来为原始类附加额外功能,而不需要修改原始类的代码。
这样,Spring的AOP动态代理实质上是面向切面的编程的实现。其主要优势在于,增强的功能被分离,使得原始类的维护更为简单和清晰。
然而,需要强调的是,尽管AOP提供了一种新的编程范式,它并不意图取代传统的面向对象编程(OOP)。相反,AOP旨在作为OOP的一个补充,帮助我们更高效地处理横切关注点,进而提升代码的整洁度和可维护性
<aop:advisor advice-ref="arround" pointcut-ref="pc" />
经过本篇的深入探讨,我们更为清晰地理解了面向过程编程、面向对象编程以及面向切面编程这三大编程范式。特别地,我们对AOP有了更加全面的把握,从其核心概念、构成要素,到其在Spring中的实际应用与实现。值得注意的是,AOP并不旨在取代传统的OOP,而是提供一种更为灵活、高效的编程方式,使我们能更加轻松地处理共通关注点,优化代码结构。通过整合原始类、额外功能、切入点定义及切面的组装,我们看到了AOP的强大与魅力,期望这些知识能助大家在实际开发中实现更加简洁、高效的代码