target与this spring aop
时间: 2023-08-17 13:05:17 浏览: 45
Target 和 This 是 Spring AOP 中的两个关键字,用于确定切入点表达式的匹配方式。
Target 表示目标对象,即被代理的对象。在使用 Target 作为关键字时,切入点表达式会匹配目标对象本身以及目标对象的所有子类。
This 表示当前对象,即代理对象。在使用 This 作为关键字时,切入点表达式会匹配代理对象本身以及代理对象的所有子类。
在使用 Target 和 This 时需要注意,如果目标对象和代理对象是同一个对象,则两者是等价的。但如果目标对象和代理对象不同,则需要根据具体情况选择使用 Target 还是 This。
相关问题
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 或其他构建工具来引入相关依赖。
spring aop常见问题
以下是一些 Spring AOP 常见问题:
1. 什么是 Spring AOP?
Spring AOP 是 Spring 框架提供的一种基于代理的 AOP(面向切面编程)实现方式。它允许你通过配置来定义横切关注点,并在执行方法时自动将这些关注点织入到目标对象中。
2. Spring AOP 支持哪些 AOP 类型?
Spring AOP 支持五种 AOP 类型:前置通知(Before Advice)、后置通知(After Advice)、环绕通知(Around Advice)、异常通知(After Throwing Advice)和最终通知(After Finally Advice)。
3. Spring AOP 和 AspectJ 有什么区别?
Spring AOP 是基于代理的 AOP 实现方式,而 AspectJ 是基于编译时或运行时字节码操纵的 AOP 实现方式。Spring AOP 的功能相对比较简单,适用于大多数场景,而 AspectJ 更加强大,但也更加复杂。
4. Spring AOP 的代理是如何实现的?
Spring AOP 采用了 JDK 动态代理和 CGLIB 代理两种方式实现代理。当目标对象实现了接口时,Spring AOP 会使用 JDK 动态代理,否则会使用 CGLIB 代理。
5. Spring AOP 的切入点(Pointcut)有哪些表达式?
Spring AOP 的切入点表达式支持通配符和正则表达式,包括以下几种:
- execution:匹配方法执行的连接点。
- within:匹配指定类型内的方法执行。
- this:匹配当前代理对象类型的执行方法。
- target:匹配当前目标对象类型的执行方法。
- args:匹配参数类型匹配的执行方法。
- @annotation:匹配特定注解标注的方法执行。
以上是一些 Spring AOP 常见问题,希望能对你有所帮助。