Spring Boot – AOP 和 OOP 的区别
AOP(面向方面的编程)通过启用横切关注点的模块化来补充 OOP。面向切面编程中模块化的关键单元(将代码分解成不同的模块)是切面。 AOP 的主要优点之一是它允许开发人员专注于业务逻辑。它使用起来更方便,因为只需在一个地方进行更改。 AOP 与 spring Ioc 一起使用,提供了一个非常强大的中间件解决方案。
Note: Cross cutting concerns are one of the concerns in any application such as logging, security, caching, etc. They are present in one part of the program but they may affect other parts of the program too.
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 具有代码可重用性、灵活性等各种优点。它还使用类来保持模块化。
Note: Object is an instance of class and class is a blueprint of an object created.
面向对象编程中模块化(将代码分解为不同的模块)的关键单元是类。 Oop 包含对象、类、接口等。Oop 缺乏使用横切关注点的特性。它由各种概念组成,例如数据抽象、封装、多态和继承。
说明:如果有水果类,那么苹果、橙子、香蕉就是水果类的各种对象。