Spring的AOP

核心:

AOP(Aspect-Oriented Programming)面向切面编程是一种思想,动态代理是面向切面编程的一种实现方式。AOP是OOP(面向对象编程)的延续。

父子类,用cglib动态代理。

接口,用jdk的动态代理。

Spring,用proxyFactory,整合了上面两种,父子类回去用cglib,接口类会去用jdk的动态代理。

Spring多用注解,注解spring使用AspectJ的注解,但实现是自己实现的,aspectj是在编译的时候把代理的内容直接在字节码文件中生成,spring不是,spring是在运行中用自己的实现方式弄的。

aop核心概念

aspect:切面,定义pointcut、advice等。如spring aop中@aspect所在的类

pointCut:切点。需要代理的类与方法。如spring aop中@Before后的就是pointcut

advice:代理的代码,即需要补充的代码。spring aop中有5中advice,@before、@after@afterReturning、@afterThrowing、@around。每个注解都对应一个实际的执行类,如@Before对应AspectJMethodBeforeAdvice类

在spring中的实现,如下:

cglib动态代理:

jdk的动态代理:

proxyFactory:

其他编程范式

除了AOP(面向切面编程)之外,还有多种编程范式,它们各自具有不同的特点和应用场景。以下是一些常见的编程范式:

  1. 命令式编程(Imperative Programming)
    • 特点:以指令的形式描述计算机执行的具体步骤,关注计算机的状态变化和控制流程。
    • 典型代表语言:C、Java、Python(在一定程度上)等。
    • 描述方式:通过一系列的语句改变程序的状态,以实现特定的计算目标。
  2. 面向对象编程(Object-Oriented Programming, OOP)
    • 特点:将程序组织为对象的集合,对象封装了数据(属性)和行为(方法或函数),强调数据和操作的封装、继承和多态。
    • 典型代表语言:Java、C++、Python、Ruby、C#等。
    • 优点:提高了代码的可重用性、可维护性和可扩展性。
  3. 函数式编程(Functional Programming, FP)
    • 特点:将计算视为数学函数的求值,强调使用纯函数、不可变数据和高阶函数。
    • 典型代表语言:Haskell、Clojure、Scala等,以及JavaScript、Python、Scala等语言中的某些功能。
    • 优点:代码更简洁、易于测试和调试,适合并行处理。
  4. 声明式编程(Declarative Programming)
    • 特点:强调描述问题的状态和关系,而不是明确指定如何解决问题。它包括逻辑编程、函数式编程、数据流编程等多种形式。
    • 典型代表语言:Prolog(逻辑编程)、SQL(数据流编程)、HTML/CSS(在一定程度上)等。
    • 优点:使代码更易于理解和维护,特别是在处理复杂逻辑和数据流时。
  5. 逻辑编程(Logic Programming)
    • 特点:使用逻辑表达式描述问题和解决方案,基于逻辑推理进行计算。
    • 典型代表语言:Prolog。
    • 应用场景:主要用于人工智能、专家系统和自然语言处理等领域。
  6. 并发编程(Concurrent Programming)
    • 特点:处理多个同时执行的计算,关注并发性和并行性。
    • 典型代表语言:Java(通过多线程)、Go、Erlang等。
    • 应用场景:适用于需要高性能和多任务处理的应用程序,如服务器、并行处理和高性能计算等。
  7. 泛型编程(Generic Programming)
    • 特点:通过参数化类型来实现代码的复用和抽象,提供通用的数据结构和算法。
    • 典型代表语言:C++(模板)、Rust等。
    • 优点:提高了代码的可重用性和灵活性。
  8. 反应式编程(Reactive Programming)
    • 特点:通过异步数据流来构建响应式系统,使得系统能够根据数据流的变化做出响应。
    • 典型代表框架:RxJava、Reactor等。
    • 应用场景:适用于需要处理大量数据流和事件流的应用程序,如实时数据分析、Web应用等。
  • 20
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值