Spring 面试题, Spring IOC 容器初始化过程?
Spring 面试题, Spring IOC 容器初始化过程?
QA
Step 1
Q:: Spring IOC 容器初始化过程是怎样的?
A:: Spring IOC 容器的初始化过程主要包括以下几个步骤:
1.
资源定位:首先,容器需要知道在哪里找到配置元数据(XML、Java配置类或注解)。
2.
加载配置文件:通过ResourceLoader
来加载配置文件。
3.
解析配置文件:使用BeanDefinitionReader
读取并解析配置文件,将配置中的bean定义转换成BeanDefinition
对象。
4.
注册Bean:将解析后的BeanDefinition
注册到BeanDefinitionRegistry
中。
5.
实例化Bean:容器根据需求创建Bean实例,并完成依赖注入。
6.
初始化Bean:在Bean实例化后,Spring会调用InitializingBean
接口或自定义的初始化方法对Bean进行初始化操作。
7.
容器启动完成:所有的Bean都已创建并初始化完成,容器进入就绪状态,可以开始提供服务。
Step 2
Q:: 什么是Spring IOC容器?
A:: Spring IOC(Inversion of Control)容器是Spring框架的核心部分,它负责管理应用程序中对象的生命周期和依赖关系。IOC的思想是将对象的创建和依赖注入控制权交给容器,而不是由应用程序代码来控制。Spring通过依赖注入(DI)实现IOC,允许开发者通过XML配置文件、注解或Java配置类来定义对象之间的依赖关系。
Step 3
Q:: Spring IOC 容器支持哪几种依赖注入方式?
A:: Spring IOC容器支持三种主要的依赖注入方式:
1.
构造器注入:通过类的构造函数注入依赖对象,适合强制依赖的情况。
2.
Setter方法注入:通过类的Setter方法注入依赖对象,适合可选依赖的情况。
3.
字段注入:通过反射直接注入依赖对象,通常使用@Autowired
注解实现,尽量避免这种方式,因为它不利于测试和维护。
Step 4
Q:: Spring Bean的生命周期是怎样的?
A:: Spring Bean的生命周期包括以下几个阶段:
1.
实例化:通过构造器或工厂方法创建Bean实例。
2.
依赖注入:将依赖的Bean注入到当前Bean中。
3.
初始化:调用InitializingBean
接口的afterPropertiesSet
方法或自定义的初始化方法。
4.
就绪使用:Bean初始化完成后,可以被容器使用。
5.
销毁:当容器关闭时,调用DisposableBean
接口的destroy
方法或自定义的销毁方法,进行资源清理。
Step 5
Q:: 什么是Bean的作用域?Spring提供了哪些Bean作用域?
A:: Bean的作用域决定了Bean在容器中的生命周期。Spring提供了以下几种Bean作用域:
1.
singleton:默认作用域,整个Spring容器中只会创建一个Bean实例。
2.
prototype:每次请求都会创建一个新的Bean实例。
3.
request:在Web应用中,每个HTTP请求都会创建一个新的Bean实例,仅适用于Web环境。
4.
session:在Web应用中,每个HTTP会话都会创建一个新的Bean实例,仅适用于Web环境。
5. **global-
session**:全局会话作用域,主要用于基于Portlet的Web应用环境。