以下是 Spring AOP(Aspect-Oriented Programming, 面向切面编程) 面试中常见的 15+ 道经典问题,每道问题都包含详细解答和代码示例,以便于理解与记忆。
1. 什么是 AOP?
- 问题: 请解释什么是 AOP 以及其核心概念。
- 解答:
- AOP 是一种编程思想,用于处理程序中的 横切关注点(如日志、事务、安全性等),通过将这些功能与核心业务逻辑分离,简化代码结构。
- 核心术语:
- Aspect(切面): 封装横切关注点的模块。
- Join Point(连接点): 程序执行的特定点(如方法调用)。
- Advice(通知): 在连接点上执行的操作。
- Pointcut(切入点): 定义切面作用的范围。
2. Spring AOP 的实现原理是什么?
- 问题: Spring AOP 是如何实现的?
- 解答:
- Spring AOP 基于 动态代理 实现:
- 如果目标类实现了接口,则使用 JDK 动态代理。
- 如果目标类没有实现接口,则使用 CGLIB 动态代理。
- 动态代理的作用: 在方法调用前后插入切面逻辑。
- Spring AOP 基于 动态代理 实现:
示例:
// JDK 动态代理示例
public interface Service {
void perform();
}
public class ServiceImpl implements Service {
public void perform() {
System.out.println("Executing Service Logic");
}
}
3. 什么是通知(Advice)?
- 问题: Spring AOP 支持哪些通知类型?
- 解答:
- 通知类型包括:
- 前置通知(@Before): 在方法执行之前执行。
- 后置通知(@After): 在方法执行之后执行。
- 返回通知(@AfterReturning): 在方法成功返回后执行。
- 异常通知(@AfterThrowing): 在方法抛出异常时执行。
- 环绕通知(@Around): 包裹方法执行的前后。
- 通知类型包括:
代码示例:
@Aspect
@Component<
标签:面试题,示例,Spring,AOP,切面,通知,执行
From: https://blog.csdn.net/weixin_45476869/article/details/144906097