springaop中的!execution
时间: 2023-08-16 21:10:17 浏览: 51
在Spring AOP中,!execution用于指定不匹配某个切点表达式的方法。它的语法格式与execution表达式相同,只是在表达式前面加上!符号。
例如,以下是一个!execution表达式的例子:
```
!execution(public * com.example.service.UserService.get*(..))
```
该表达式表示拦截com.example.service.UserService类中所有以get开头的方法,并且方法的参数可以是任意类型,且数量可以是任意个数,但是不包括get方法。
相关问题
spring aop execution表达式
在Spring AOP中,execution表达式是用于定义切点的一种方式。它可以指定一个或多个方法的执行,以便在这些方法执行之前、之后或周围执行切面逻辑。execution表达式的语法如下:
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
其中,各个部分的含义如下:
1. modifiers-pattern: 方法的修饰符模式,例如public、private等。
2. ret-type-pattern: 方法的返回类型模式,例如void、int等。
3. declaring-type-pattern: 方法所属类或接口的模式。
4. name-pattern: 方法名称的模式。
5. param-pattern: 方法参数的模式,用逗号分隔多个参数,可以使用通配符*表示任意类型。
6. throws-pattern: 方法可能抛出的异常的模式。
引用中的示例execution(* service.UserServiceImpl.add(..))表示匹配UserServiceImpl类中的add方法,该方法可以接受任意个数的参数。
引用中的示例execution(* service.UserServiceImpl.add(String))表示匹配UserServiceImpl类中的add方法,该方法只能接受一个String类型的参数。
通过使用execution表达式,我们可以根据需要定义不同的切点,以便在Spring AOP中实现精确的切面逻辑。
spring aop 使用
Spring AOP 是一个用于实现面向切面编程的框架。它可以通过配置来实现横切关注点的模块化,并将其应用到程序的不同部分。Spring AOP 使用 AspectJ 切入点指示符来定义切入点表达式,用于匹配方法执行连接点。Spring AOP 支持以下 AspectJ 切入点指示符:
1. execution:用于匹配方法执行连接点。这是使用 Spring AOP 时要使用的主要切入点指示符。
2. within:限制匹配以连接某些类型中的点(使用 Spring AOP 时在匹配类型中声明的方法的执行)。
3. this:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中 Bean 引用(Spring AOP 代理)是给定类型的实例。
4. target:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中目标对象(正在代理的应用程序对象)是给定类型的实例。
5. args:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中参数是给定类型的实例。
6. @target:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中执行对象的类具有给定类型的注释。
7. @args:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中传递的实际参数的运行时类型具有给定类型的注释。
8. @within:限制匹配以连接具有给定注释的类型中的点(使用 Spring AOP 时在具有给定注释的类型中声明的方法的执行)。
9. @annotation:限制匹配到连接点的主题(在 Spring AOP 中运行的方法)具有给定注释的连接点。
在使用 Spring AOP 时,需要引入 Spring AOP 和 Spring Context 相关的包,并在配置文件中进行相应的配置。可以通过 Maven 或其他构建工具来引入相关依赖。