Spring 面试题, Spring IOC 有什么好处?
Spring 面试题, Spring IOC 有什么好处?
QA
Step 1
Q:: Spring IOC 有什么好处?
A:: Spring IOC(Inversion of Control,控制反转)主要的好处包括:1. 降低代码耦合度:通过依赖注入,Bean 不需要自己创建和管理依赖对象,Spring 容器会自动注入需要的依赖对象。2. 提高代码的可测试性:因为依赖通过注入来实现,可以更容易地进行单元测试,替换实际的依赖对象为模拟对象。3. 更容易管理对象的生命周期:Spring 容器负责 Bean 的生命周期管理,开发者可以专注于业务逻辑而不用关注对象的创建、销毁等操作。4.
促进模块化和可重用性:通过 Spring 的配置文件或注解,可以很容易地管理应用程序的模块和组件,提高了代码的重用性。
Step 2
Q:: Spring IOC 是如何实现依赖注入的?
A:: Spring IOC 通过构造器注入、Setter 注入以及接口注入(较少使用)来实现依赖注入。构造器注入是在创建对象时通过构造函数传递依赖对象,Setter 注入则是在对象创建后通过 Setter 方法注入依赖对象。Spring 的注解 @
Autowired 也可以用来自动注入依赖,这些注入方式都由 Spring 容器负责管理和协调。
Step 3
Q:: Bean 的作用域有哪些?
A:: Spring Bean 主要有以下几种作用域:1. singleton:单例模式,整个 Spring 容器中只有一个实例,默认作用域。2. prototype:每次请求都会创建一个新的 Bean 实例。3. request:针对 HTTP 请求,每次请求都会创建一个新的 Bean 实例。4. session:针对 HTTP 会话,每次会话会创建一个新的 Bean 实例。5.
application:针对 ServletContext,整个应用范围内有一个实例。
Step 4
Q:: 什么是 Spring 的 AOP?
A:: Spring AOP(Aspect-
Oriented Programming,面向切面编程)是一种编程范式,旨在将横切关注点(例如日志记录、事务管理、安全性)从业务逻辑中分离出来。AOP 通过定义切面(Aspect),并通过切点(Pointcut)来指定切面应用的位置,通过增强(Advice)来定义切面具体的行为。Spring AOP 常用来做日志记录、性能监控、异常处理等,提升代码的模块化和可维护性。
Step 5
Q:: Spring 中的事务管理是如何实现的?
A:: Spring 提供了声明式和编程式两种事务管理方式。声明式事务管理通过 @Transactional 注解和配置文件中的 <tx:advice>
来声明事务的边界,Spring 自动管理事务的提交和回滚。编程式事务管理则允许开发者通过 TransactionTemplate 或者直接使用 PlatformTransactionManager API 来显式地管理事务。Spring 的事务管理器可以与多种事务资源管理器(例如 JPA、JDBC)协作。