后端经典面试题合集, Spring 的两大核心概念是什么?简单讲一下你对它们的理解
后端经典面试题合集, Spring 的两大核心概念是什么?简单讲一下你对它们的理解
QA
Step 1
Q:: Spring 的两大核心概念是什么?简单讲一下你对它们的理解。
A:: Spring 的两大核心概念是 Inversion of Control (IoC) 和 Aspect-Oriented Programming (AOP)
。
1. **Inversion of Control (IoC)**:IoC 是一种设计原则,通过控制反转,程序的控制权从应用代码移交给容器。具体表现为依赖注入 (Dependency Injection, DI)
,即由 Spring 框架负责创建和管理对象的依赖关系,而不是由对象自己来管理。这使得代码更加松耦合,便于测试和维护。
2. **Aspect-Oriented Programming (AOP)
**:AOP 是一种编程范式,用于在应用程序中定义跨越多个模块的通用行为(如日志记录、事务管理、权限控制等)。通过 AOP,可以将这些横切关注点从业务逻辑中分离出来,从而实现关注点分离(Separation of Concerns),提高代码的可维护性。
Step 2
Q:: 什么是依赖注入 (Dependency Injection)
,它有哪些形式?
A:: 依赖注入 (Dependency Injection, DI)
是一种设计模式,通过将对象的依赖关系从类内部移交给外部来实现对象的解耦。在 Spring 中,DI 有以下几种形式:
1.
构造函数注入:通过构造函数将依赖注入到类中。
2.
Setter 方法注入:通过类的 setter 方法将依赖注入。
3. **字段注入**:通过在字段上使用 @
Autowired 注解,Spring 自动注入依赖。
Step 3
Q:: 什么是 Spring 的 Bean 生命周期?
A:: Spring 的 Bean 生命周期包括以下几个阶段:
1.
实例化:Spring 容器根据配置文件或注解创建 Bean 的实例。
2.
属性填充:Spring 通过依赖注入(DI)将 Bean 的依赖注入。
3. **初始化**:如果 Bean 实现了 InitializingBean 接口或定义了 init-
method,Spring 会在 Bean 的属性设置完毕后调用这些方法。
4.
使用:Bean 被客户端程序使用。
5. **销毁**:在容器关闭时,如果 Bean 实现了 DisposableBean 接口或定义了 destroy-
method,Spring 会调用这些方法进行资源释放。
Step 4
Q:: 如何在 Spring 中实现事务管理?
A:: 在 Spring 中,可以通过声明式和编程式两种方式实现事务管理:
1. **声明式事务管理**:使用 @
Transactional 注解,在方法或类上标注该注解,Spring 会自动在该方法的执行过程中管理事务。
2.
编程式事务管理:通过 TransactionTemplate 或 PlatformTransactionManager 接口手动管理事务的开始、提交和回滚。