面试鸭Java后端面试题, 什么是 Spring 的 IOC 和 AOP?
面试鸭Java后端面试题, 什么是 Spring 的 IOC 和 AOP?
QA
Step 1
Q:: 什么是 Spring 的 IOC?
A:: IOC(Inversion of Control,控制反转)是 Spring 框架的核心概念之一。IOC 主要是通过依赖注入(Dependency Injection)来实现的。它允许对象在创建时将其依赖关系注入到自身中,而不是在对象内部创建这些依赖关系。这使得对象之间的耦合度降低,增强了代码的可维护性和可测试性。
Step 2
Q:: 什么是 Spring 的 AOP?
A:: AOP(Aspect-
Oriented Programming,面向切面编程)是 Spring 的另一个核心概念。AOP 允许通过定义切面(Aspect)和切点(Pointcut)在应用程序的特定点(例如方法调用或异常抛出)插入额外的行为(例如日志记录或事务管理)。这使得横切关注点的代码可以集中管理,而不必分散在业务逻辑代码中。
Step 3
Q:: IOC 和 DI 有什么区别?
A:: IOC 是一种思想,是通过依赖注入(DI)来实现的。DI 是具体实现 IOC 的一种方式,它通过构造函数注入、Setter 方法注入或接口注入等方式,将对象的依赖关系注入到对象内部。换句话说,DI 是实现 IOC 的手段之一。
Step 4
Q:: Spring 中有哪些常见的注解用于依赖注入?
A:: Spring 中常见的依赖注入注解包括 @Autowired、@Resource、@Inject 等。@Autowired 是最常用的注解之一,它可以自动注入匹配的 Bean;@Resource 和 @Inject 分别来自 JSR-250 和 JSR-330
标准,也可以用于依赖注入。
Step 5
Q:: 如何在 Spring 中实现事务管理?
A:: Spring 提供了声明式事务管理和编程式事务管理两种方式。声明式事务管理通常使用 @
Transactional 注解来声明事务边界,而编程式事务管理则使用 PlatformTransactionManager 接口手动管理事务。