今日目标

二、AOP案例

1 案例-测量业务层接口万次执行效率

问题导入

能不能描述一下环绕通知里面的实现步骤?

1.1 需求和分析

需求:任意业务层接口执行均可显示其执行效率(执行时长)

分析:

①:业务功能:业务层接口执行前后分别记录时间,求差值得到执行效率 ②:通知类型选择前后均可以增强的类型——环绕通知

1.2 代码实现

【前置工作】环境准备
  1. Spring整合mybatis对spring_db数据库中的Account进行CRUD操作
  2. Spring整合Junit测试CRUD是否OK。
  3. 在pom.xml中添加aspectjweaver切入点表达式依赖
  4. ... ...
【第一步】编写通知类
【第二步】在SpringConfig配置类上开启AOP注解功能
【第三步】运行测试类,查看结果

image-20210730164219555

 

2 AOP切入点数据获取

问题导入

在环绕通知中可以获取到哪些数据?

2.1 获取参数

说明:在前置通知和环绕通知中都可以获取到连接点方法的参数们

2.2 获取返回值

说明:在返回后通知和环绕通知中都可以获取到连接点方法的返回值

2.3 获取异常

说明:在抛出异常后通知和环绕通知中都可以获取到连接点方法中出现的异常

 

3 案例-百度网盘密码数据兼容处理

问题导入

请说出我们该使用什么类型的通知来完成这个需求?

3.1 需求和分析

需求:对百度网盘分享链接输入密码时尾部多输入的空格做兼容处理

image-20210731193059709

分析: ①:在业务方法执行之前对所有的输入参数进行格式处理——trim() ②:使用处理后的参数调用原始方法——环绕通知中存在对原始方法的调用

3.2 代码实现

【前置工作】环境准备
【第一步】编写通知类
【第二步】在SpringConfig配置类上开启AOP注解功能
【第三步】运行测试类,查看结果

4 AOP开发总结

4.1 AOP的核心概念

4.2 切入点表达式语法

4.3 五种通知类型