Spring AOP面试题深度解析:关注点与横切关注点,通知类型与实现详解

需积分: 49 19 下载量 8 浏览量 更新于2024-09-02 收藏 100KB DOCX 举报
Spring AOP (面向切面编程)是面向对象编程的扩展,强调通过将共享的逻辑(横切关注点)从核心业务逻辑中分离出来,提高代码的模块化和可维护性。它主要关注于处理那些跨模块且对整个系统具有普遍意义的问题,如事务管理、日志记录和安全性等。 1. **关注点与横切关注点的区别**: - 关注点:指的是应用程序中的具体功能或行为,如库存管理、用户管理等,是业务逻辑的核心部分。 - 横切关注点:是那些不依赖于特定业务逻辑,但对整个系统有广泛影响的模块,如日志、安全控制等,它们是“横切”业务流程的。 2. **AOP的实现**: - Java中的主流AOP实现包括Spring AOP(基于Spring框架),AspectJ,以及JBoss AOP。此外,还有其他第三方实现,如EclipseAspectJ和CGLIB等。 3. **Spring的通知类型**: - Spring支持五种基本通知类型: - 前置通知(BeforeAdvice):在连接点执行前,不会中断执行流,通常用于设置参数或校验条件,使用`@Before`注解。 - 返回后通知(AfterReturningAdvice):连接点正常执行完毕后执行,如记录操作结果,使用`@AfterReturning`注解。 - 异常通知(AfterThrowingAdvice):当方法抛出异常时执行,用`@AfterThrowing`注解。 - 返回后最终通知(AfterCompletionAdvice):无论是否异常都会执行,通常清理工作,用`@AfterCompletion`注解。 - 环绕通知(AroundAdvice):环绕通知允许完全控制连接点的执行流程,`@Around`注解用于此。 4. **Spring AOP代理**: Spring AOP通过代理机制实现,创建了一个代理对象,该对象包含被代理对象的原始行为以及附加的切面逻辑。代理对象在实际调用被代理方法前后执行通知。 5. **其他概念**: - **引介(Introduction)**:Spring AOP提供的一种特殊的通知类型,可以在无需修改已有类的情况下,为类添加额外的功能,如增强类的属性或方法。 - **连接点(Joint Point)**:程序执行过程中的一个特定点,比如方法调用,是切面应用的时机。 - **切入点(Point Cut)**:定义了何时和何处应用通知,它是对连接点的筛选规则,决定了哪些方法或执行路径将被切面影响。 通过以上内容,面试者可以深入了解Spring AOP的工作原理、核心概念以及如何在实际项目中应用这些概念来提升代码的可维护性和复用性。