java-spring-3

4. 面向切面的 Spring

  • 面向切面编程的基本原理

  • 通过 pagp创建切面

  • 使用 @AspectJ 创建注解

  • 为 @AspectJ 切面注入依赖

横切关注点 Cross cutting Concern: 散布于应用中多处的功能

AOP想要解决的问题把这些横切关注点和业务逻辑相分离

切面实现了跨多个应用对象逻辑的模块化

4.1 AOP 是啥

通知 Advice

切面的 What 和 When

定义切面是什么,何时使用

可以应用五种类型

  • 前置通知 before

目标方法调用前通知

  • 后置通知 after

目标方法完成之后,输出无所谓

  • 返回通知 After-returning

目标方法成功执行之后,成功执行

  • 异常通知 After-throwing

目标方法抛出异常之后

  • 环绕通知 Around

通知包裹被通知方法,包起来,调用之前和调用之后执行自定义行为

切点 Pointcut

切面的 Where

连接点 Joinpoint

应用执行过程中插进切面的点

切面 Aspect

通知 + 切点

引入 Introduction

朝现有的类添加新方法或者属性

织入 Weaving

把切面应用到目标对象,创建新的代理对象

AOP 支持

Spring 提供了四种类型的 AOP 支持

  • 基于代理的经典 Spring AOP

  • 纯 POJO 切面

  • @AspectJ 注解驱动的切面

  • 注入式 AspectJ 切面

Spring 通知是 java 写的

定义通知应用的切点通常可以用注解,或者在 Spring 配置文件里用 xml 写

通过在代理类中包裹切面, Spring 在运行期把切面织入到 Spring 管理的 Bean 中

Spring 只支持方法级别的连接点

这些概念是一个字都没看懂 = =

看看具体的示例代码可能心里就会有数了