开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情
在写完一个web项目后经常需要测试某个层某个方法的执行效率,来判断代码是否需要优化,而我们又不希望更改写好的代码,这时候就引出了今天要说的AOP。
AOP面向切面编程)不是Spring框架的特性,但是Spring框架对AOP提供了很好的支持。这里的切面是指的什么呢?项目分为持久层、业务层、控制层,处理每个业务都需要执行对应的代码,则假设每层的数据处理流程之间存在某个切面,当处理流程执行到切面时就自动执行切面中的方法,从而实现在不改变项目代码的前提下让多个流程都执行相同的代码。
使用AOP的步骤是什么?首先要导入相关依赖,然后编写切面方法来统计业务方法执行的时长。
导入依赖
在pom.xml文件中导入依赖:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
</dependency>
切面方法
在设计切面方法时要遵循哪些原则:
- 切面方法的访问权限必须为public。
- 切面方法的返回值类型:Object或者是void,前者是在使用@Around注解时要使用的返回值类型,并且要返回连接点方法的返回值。
- 切面方法的参数列表:当切面方法使用@Around注解时,必须添加ProceedingjoinPoint接口类型的对象,这个对象用来表示连接点,也就是调用切面所在位置对应的方法的对象;当不使用@Around注解时则不要求必须添加ProceedingJoinPoint接口对象。
- 切面方法前添加@Aspect、@Component注解,后者表示将该方法自动添加到SpringIOC容器中。
- 添加@Around注解。