Spring面试题, Spring 中的 DI 是什么?
Spring面试题, Spring 中的 DI 是什么?
QA
Step 1
Q:: Spring 中的 DI 是什么?
A:: DI(Dependency Injection,依赖注入)是 Spring 框架中的核心概念之一。它是一种设计模式,用于将对象的依赖关系注入到对象中,而不是在对象内部自行创建依赖。通过 DI,可以使代码更加模块化、易于测试和维护。
Step 2
Q:: Spring 中如何实现 DI?
A:: 在 Spring 中,DI 主要通过 XML 配置文件和注解来实现。XML 配置文件方式通过在 XML 中定义 bean 及其依赖关系,注解方式通过使用 @Autowired、@Resource、@
Inject 等注解来自动注入依赖。
Step 3
Q:: DI 和 IoC 有什么区别?
A:: DI 是一种具体的实现方式,而 IoC(Inversion of Control,控制反转)是一个更广泛的概念。IoC 表示由外部容器来控制对象的创建和依赖,而不是对象自己去控制。DI 是实现 IoC 的一种手段,具体体现在将依赖注入给对象。
Step 4
Q:: Spring 中的 Bean 生命周期是什么样的?
A:: Spring 中 Bean 的生命周期包括实例化(Instantiation)、属性注入(Populate Properties)、初始化(Initialization)、销毁(Destruction)四个主要阶段。在这些阶段中,Spring 提供了一些扩展点,如 InitializingBean 接口的 afterPropertiesSet 方法、DisposableBean 接口的 destroy 方法、以及 @PostConstruct 和 @
PreDestroy 注解。
Step 5
Q:: 什么是 Spring 中的 Bean 作用域?
A:: Spring 中的 Bean 作用域(Scope)定义了 Bean 的生命周期和可见范围。主要有五种作用域:singleton、prototype、request、session 和 global-session。singleton 表示在 Spring 容器中仅存在一个实例;prototype 表示每次获取 Bean 时都会创建一个新实例;request、session 和 global-
session 主要用于 web 应用,分别表示在一次 HTTP 请求、一次 HTTP 会话和全局 HTTP 会话中存在一个实例。