Spring的AOP操作

Posted wxw7blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的AOP操作相关的知识,希望对你有一定的参考价值。

在Spring里面进行AOP操作,使用AspectJ实现。

AspectJ是什么?

AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。

(1)AspectJ不是Spring的一部分,和Spring配合使用

(2)Spring2.0以后增加了对AspectJ切点表达式的使用

使用AspectJ实现AOP由两种方式

1.基于AspectJ的配置文件方式

2.基于AspectJ的注解方式

AOP操作准备

1.导入jar包

技术分享图片

2.引入约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here -->

</beans>

使用表达式配置切入点

常用的表达式

execution(<访问修饰符><返回类型><方法所属类><方法名>(<参数>)<异常>)

其中红色字体的部分时不能省略的,各部分都支持通配符 “*” 来匹配全部。

  比较特殊的为形参表部分,其支持两种通配符

  •   "*":代表一个任意类型的参数;
  •   “..”:代表零个或多个任意类型的参数。

  例如:

    ()匹配一个无参方法

    (..)匹配一个可接受任意数量参数和类型的方法

    (*)匹配一个接受一个任意类型参数的方法

    (*,Integer)匹配一个接受两个参数的方法,第一个可以为任意类型,第二个必须为Integer。

AspectJ的AOP操作

1.创建两个类

技术分享图片

技术分享图片

2.在xml中进行配置

技术分享图片

3.写代码进行测试

技术分享图片

这里比较特殊的是环绕增强,因为中间才是方法执行,这里需要用到一个参数

技术分享图片

技术分享图片

配置完了就行测试

技术分享图片

 

 

以上是关于Spring的AOP操作的主要内容,如果未能解决你的问题,请参考以下文章

spring5:AOP操作

Spring之AOP操作,巧夺天功的切面技术

spring aop简单应用

Spring aop 拦截不到Dao

Spring_AOP 记录系统关键操作日志用法

Spring第二天——IOC注解操作与AOP概念