面试官问:Spring的两大核心是什么?谈一谈你对IOC的理解? 谈一谈你对DI的理解? 谈一谈你对AOP的理解?(主要是牵着他走) 理解不了你直接来喷我

本文详细探讨了Spring框架的两大核心——IOC(控制反转)和AOP(面向切面编程)。介绍了IOC的理解,包括依赖注入(DI)的概念,以及Spring的三种注入方式。同时,深入讲解了Spring容器的创建过程和Bean的生命周期。对于AOP,文章阐述了它是对OOP的补充,以及Spring中的动态代理机制。最后,概述了Spring Bean从创建前准备、创建实例、依赖注入、容器缓存到销毁实例的完整生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两大核心:IOC(控制反转)和AOP(面向切面编程);

SpringIOC的理解:

IOC(控制反转):是一个理论思想,原来的对象是由使用者来进行控制,有了spring之后,可以把整个对象交给spring来帮我们进行管理。

IOC也叫DI(依赖注入):把对应的属性的值注入到具体的对象中,@Autowired,populateBean完成属性值的注入。

Spring的IOC三种注入方式:构造器注入、setter方法注入、注解注入

容器:存储对象,使用map结构来存储,在spring中一般存在三级缓存,singletonObjects存放完整的bean对象,但是整个bean 的生命周期。从创建到使用到销毁的过程全部都是由容器来管理(带出问题bean的生命周期)

  1. 容器的创建过程(beanFactory,DefaultListableBeanFactory),向bean工厂中设置一些参数(BeanPostProcessor,Aware接口的子类)等等属性;
  2. 加载解析bean对象,准备要创建的bean对象的定义对象beanDefinition,(xml,或者注解的解析过程)
  3. BeanFactoryPostProcessor的处理,处理占位符PlaceHolderConfigurSupport,ConfigurationClassPostProcessor
  4. BeanPostProcessor的注册功能,方便后续对bean对象完成具体的扩展功能
  5. 通过反射的方式将BeanDefinition对象实例化成具体的bean对象
  6. Bean对象的初始化过程(填充属性,调用aware子类的方法,调用beanPostProcessor前置处理方法,调用init-method方法,调用BeanPostProcessor的后置处理方法)
  7. 生成完整的Bean对象,通过getBean方法可以直接获取
  8. 销毁过程

AOP(面向切面编程)可以说是对OOP(面向对象编程)的补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块。

Spring AOP 中的动态代理主要有两种方式:JDK 动态代理(目标对象实现接口)和 CGLIB 动态代理【子类代理】(目标对象未实现接口);

Spring Bean的生命周期?

大致可以分为五个阶段:创建前准备、创建实例、依赖注入、容器缓存、销毁实例。

  1. 创建前准备:bean在开始加载之前要从上下文和一些配置中去解析并且查找bean相关的扩展实现,比如像init-method,容器在初始化bean的时候会调用的方法,还有destory-method,容器在销毁bean的时候会调用的方法,以及BeanPostProcessor这一类的bean加载过程中的一些前置和后置的一些处理扩展实现,这些类或者是配置其实是spring提供给开发者用来去实现bean加载过程中的一些扩展;
  2. 创建实例阶段:主要作用通过反射去创建bean的实例对象,并且会扫描和解析bean声明的一些属性;
  3. 依赖注入阶段:如果实例化的bean存在依赖其他bean对象的一些情况,则需要对这些依赖的bean进行对象注入,比如常见的@Autowired,以及setter注入的配置形式,同时在这个阶段会触发一些扩展的调用,比如说常见的扩展类beanPostProcessors,用来去实现bean初始化前后的回调;
  4. 容器缓存阶段:把bean保存在容器里,以及spring的缓存中,到这个阶段我们就可以使用bean了,init-method这个属性配置的一些方法,会在这个阶段会被调用。以及像BeanPostProcessors的后置处理器方法也会在这个阶段被触发。
  5. 销毁实例阶段:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值