当前位置: 首页> 房产> 家装 > Spring6笔记(三):面向切面AOP和单元测试Junit

Spring6笔记(三):面向切面AOP和单元测试Junit

时间:2025/7/14 22:57:56来源:https://blog.csdn.net/qq_43470538/article/details/139042989 浏览次数:0次

五、面向切面:AOP

AOP:指不改变源代码的情况下增强功能或方法

5.1 场景模拟

写一个计算器

搭建子模块:spring6-aop

5.1.1 声明接口

声明计算器接口 Calculator ,包含加减乘除的抽象方法

Calculator.java

package com.atguigu.example;public interface Calculator {//加int add(int i, int j);//减int sub(int i, int j);//乘int mul(int i, int j);//除int div(int i, int j);
}

5.1.2 创建实现类

CalculatorImpl.java

package com.atguigu.example;//基本实现类
public class CalculatorImpl implements Calculator {@Overridepublic int add(int i, int j) {int result = i+j;System.out.println("方法内部 result = " + result);return result;}@Overridepublic int sub(int i, int j) {int result = i-j;System.out.println("方法内部 result = " + result);return result;}@Overridepublic int mul(int i, int j) {int result = i*j;System.out.println("方法内部 result = " + result);return result;}@Overridepublic int div(int i, int j) {int result = i/j;System.out.println("方法内部 result = " + result);return result;}
}

5.1.3 创建带日志功能的实现类

CalculatorLogImpl.java

package com.atguigu.example;//带日志的实现类
public class CalculatorLogImpl implements Calculator{@Overridepublic int add(int i, int j) {System.out.println("[日志] add 方法开始了,参数是:" + i + "," + j);int result = i+j;System.out.println("方法内部 result = " + result);System.out.println("[日志] add 方法结束了,结构是:" + result);return result;}@Overridepublic int sub(int i, int j) {System.out.println("[日志] sub 方法开始了,参数是:" + i + "," + j);int result = i-j;System.out.println("方法内部 result = " + result);System.out.println("[日志] sub 方法结束了,结构是:" + result);return result;}@Overridepublic int mul(int i, int j) {System.out.println("[日志] mul 方法开始了,参数是:" + i + "," + j);int result = i*j;System.out.println("方法内部 result = " + result);System.out.println("[日志] mul 方法结束了,结构是:" + result);return result;}@Overridepublic int div(int i, int j) {System.out.println("[日志] div 方法开始了,参数是:" + i + "," + j);int result = i/j;System.out.println("方法内部 result = " + result);System.out.println("[日志] div 方法结束了,结构是:" + result);return result;}
}

5.1.4 提出问题

5.2 代理模式

5.2.1 概念

5.2.2 静态代理

5.2.3 动态代理

5.2.4 测试

5.3 AOP 概念及相关术语

AOP 的底层用到了动态代理

5.3.1 概述

5.3.2 相关术语

5.3.3 作用

5.4 基于注解的AOP 

5.4.1 技术说明

5.4.2 准备工作

5.4.3 创建切面类并配置

5.4.4 各种通知

5.4.5 切入点表达式语法

5.4.6 重用切入点表达式

5.4.7 获取通知的相关信息

5.4.8 环绕通知

5.4.9 切面的优先级

5.5 基于 XML 的AOP

六、单元测试:JUnit

6.1 整合JUnit5

6.2 整合JUnit4

关键字:Spring6笔记(三):面向切面AOP和单元测试Junit

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: