📜  Spring Boot – AOP 和 OOP 的区别

📅  最后修改于: 2022-05-13 01:55:04.464000             🧑  作者: Mango

Spring Boot – AOP 和 OOP 的区别

AOP(面向方面的编程)通过启用横切关注点的模块化来补充 OOP。面向切面编程中模块化的关键单元(将代码分解成不同的模块)是切面。 AOP 的主要优点之一是它允许开发人员专注于业务逻辑。它使用起来更方便,因为只需在一个地方进行更改。 AOP 与 spring Ioc 一起使用,提供了一个非常强大的中间件解决方案。

AOP 与 Oop 一起使用,因为它也适用于类和对象等。我们也可以说 Oop 是 AOP 的基本术语。 Aop 中使用的不同框架有 AspectJ、JBoss 和 Spring。 AOP 使程序松散耦合。 AOP 将业务逻辑与横切关注点分开。包含横切关注点的切面类由@Aspect 和@EnableAspectJAutoProxy 注解

AOP有不同的术语,如 Aspect、Weaving、不同类型的通知、JoinPoints 和 Pointcut 表达式等。这些术语解释如下:

  • Aspect:横切关注点被模块化为 Aspect。包含此类横切关注点的类使用@Aspect 注释进行注释。
  • Join point:方法执行使用Joinpoint来表示。
  • 建议: Aspect 对特定的 Joinpoint 采取行动。此操作取决于各种建议,如下所述:
  • 通知前:它在方法执行之前运行。
  • 返回通知后:在方法返回结果后运行。
  • 抛出通知后:它在方法抛出异常后运行。
  • After(finally)advice:在方法执行后或抛出异常或方法返回结果后执行。
  • 环绕通知:可以执行方法调用前后的行为。
  • 切入点:切入点是匹配连接点的签名。

插图:带有前置建议的切入点表达式:

// Annotation
@Before("execution(* abc.efg.gettingstarted.dao.*.add(..))")

public void allMethods(Point Point) 
{  // Aspect body }

面向对象 编程

面向对象的编程模型围绕类和对象工作。 Oop 的主要构建块是类、对象、方法、属性等。Oop 具有代码可重用性、灵活性等各种优点。它还使用类来保持模块化。

面向对象编程中模块化(将代码分解为不同的模块)的关键单元是类。 Oop 包含对象、类、接口等。Oop 缺乏使用横切关注点的特性。它由各种概念组成,例如数据抽象、封装、多态和继承。

说明:如果有水果类,那么苹果、橙子、香蕉就是水果类的各种对象。