Spring相关知识集锦----2

一、Spring循环依赖三级缓存解决方式

singletonObjects:一级缓存

earlySingletonObjects:二级缓存

singletonFactories:三级缓存

spring如何使用三级缓存解决循环依赖:

1.a实例化完成后,将a放入三级缓存

2.初始化a,又去创建b

3.b实例化完成后,将b放入三级缓存

4.初始化b,又从容器中获取a

5.此时可以从三级缓存中查到a。将半成品a放入二级缓存,并从三级缓存移除a,最终返回半成品a。开始回溯。

6.b的创建过程回溯完之后,b成为正品,将b从三级缓存中移除,将b放入一级缓存,而a还是半成品。

7.a的创建过程回溯完之后,a也成为正品,将a放入一级缓存,并从二级缓存中移除。循环依赖解决。

二、Spring的AOP原理是什么?

1.AOP:面向切面编程,用于在不修改原始代码的情况下向现有应用程序添加新功能。

2.AOP实现原理是基于动态代理和字节码操作的。在编译的时候,spring会使用aspect编译器将切片代码编译成字节码文件。在运行时,spring会使用jdk动态代理或cglib代理生成代理类,这些代理类会在目标对象方法执行前后插入切片代码,实现AOP。

三、Spring自动装配原理

1.springboot的自动装配实际上是从spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的bean对象,然后将他们交给spring容器进行管理。

通过注解或者一些简单的配置就能在springboot帮助下实现某块功能。

2.大概可以把@springbootapplication看作是@configuration/@enableautoconfiguration/@componentscan注解的集合

@configuration:允许在上下文中注册额外的bean或导入其他配置类

@enableautoconfiguration:启用springboot的自动配置机制

@componentscan:扫描被@component注解的bean。

3.自动装配的核心功能实现是通过autoconfigurationimportselector类。该类实现了ImportSelector接口,也就实现了这个接口中的selectImports方法,该方法主要用于获取所有符合条件的类的全限定类名,这些类需要被加载到IOC容器中。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值