2024-Spring IOC 和 AOP源码分析(下篇)

接上篇:2024-Spring IOC 和 AOP源码分析(上篇)

3、说一下SpringAOP原理

使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

AOP 重要概念:
在这里插入图片描述

AOP 两种代理方式:

Spring 提供了两种方式来生成代理对象: JDKProxy 和 Cglib,具体使用哪种方式生成由AopProxyFactory 根据 AdvisedSupport 对象的配置来决定。默认的策略是如果目标类是接口,则使用 JDK 动态代理技术,否则使用 Cglib 来生成代理。

JDK 动态代理主要涉及到 java.lang.reflect 包中的两个类:Proxy 和 InvocationHandler。InvocationHandler是一个接口,通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编制在一起。Proxy 利用 InvocationHandler 动态创建一个符合某一接口的实例,生成目标类的代理对象。

CGLib 全称为 Code Generation Library,是一个强大的高性能,高质量的代码生成类库,可以在运行期扩展 Java 类与实现 Java 接口,CGLib 封装了 asm,可以再运行期动态生成新的 class。和 JDK 动态代理相比较:JDK 创建代理有一个限制,就是只能为接口创建代理实例,而对于没有通过接口定义业务方法的类,则可以通过 CGLib 创建动态代理。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring IOC(控制反转)和AOP(面向切面编程)是Spring框架的两个核心特性。 1. Spring IOC原理: - IOC的核心思想是通过容器管理对象的创建和依赖关系的维护。传统的开发方式是在代码中直接创建对象并维护对象之间的依赖关系,而在Spring中,将对象的创建和依赖关系的维护交给了IOC容器来处理。 - Spring IOC的实现主要依靠BeanFactory和ApplicationContext两个核心接口,它们负责管理Bean的生命周期和依赖注入。 - IOC的实现方式主要有XML配置、注解配置和Java配置三种方式,通过这些配置方式,Spring可以根据配置信息来创建和管理Bean对象。 2. Spring AOP原理: - AOP的核心思想是通过在程序运行过程中动态地将一些通用的功能织入到目标对象中,从而实现横切关注点的分离。 - Spring AOP基于动态代理实现,它通过代理对象来实现对目标对象的增强。Spring AOP支持两种代理方式:JDK动态代理和CGLIB动态代理。 - 在Spring AOP中,切面(Aspect)是一个横切关注点的模块化实现,通常是一个类,其中包含了通知(Advice)和切点(Pointcut)。 - 通知定义了在目标对象的哪个方法上执行什么样的操作,而切点定义了在目标对象的哪些方法上应用通知。 总结起来,Spring IOCAOP的原理是通过IOC容器管理对象的创建和依赖注入,以及通过动态代理实现对目标对象的增强。IOC实现了控制反转,将对象的创建和依赖关系的维护交给了容器;AOP实现了面向切面编程,将通用功能从业务逻辑中解耦出来,提供了更好的代码复用性和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值