aspect 实现aop 遇到lambda 表达式 this::test()怎么使用
时间: 2023-02-09 18:27:42 浏览: 64
使用 AspectJ 实现 AOP 的时候,你可以使用 this::test 来引用类内部的方法 test。例如:
```
@Aspect
class MyAspect {
@Before("execution(* *(..)) && @annotation(LogExecutionTime) && this(target)")
public void logExecutionTime(JoinPoint joinPoint, Object target) {
// ...
}
}
class MyClass {
@LogExecutionTime
public void test() {
// ...
}
}
```
上面的代码中,MyAspect 类的 logExecutionTime 方法会在所有带有 @LogExecutionTime 注解的方法被执行之前执行。使用 this(target) 可以将目标方法的执行对象作为参数传入。
相关问题
aop:advisor和aop:aspect
AOP:Advisor和AOP:Aspect都是AOP(面向切面编程)的重要概念。AOP:Advisor是指一个通知的集合,是对一个特定的切入点所生效的通知的集合;而AOP:Aspect则是一个更大范围的抽象,包含了切入点、通知、切点等等的所有内容,是AOP的一个总称。
android中 aspect 实现aop 需要注意些什么
在 Android 中使用 Aspect 实现 AOP 需要注意以下几点:
1. 引入 Aspect 框架:在使用 Aspect 进行编程时,需要引入 Aspect 相关的库文件。在 Android 开发中,一般使用 AspectJ 这个库,具体使用方法可以参考 AspectJ 官方文档。
2. 定义切点:在 AspectJ 中,切点是指程序执行的某个特定位置,在这个位置可以插入切面进行处理。在 Android 中,可以通过定义 Annotation 或者 Pointcut 表达式来定义切点。
3. 定义切面:切面是对切点进行处理的逻辑代码,例如在切点前后执行某些操作,或者替换切点执行的方法等。在 Android 中,切面可以是一个类,需要使用 AspectJ 提供的注解来标识。
4. 注入切面:在 Android 中,可以使用 AspectJ 提供的注解来将切面注入到目标类中。需要注意的是,注入切面的时候,需要使用 AspectJ 提供的编译器进行编译,以生成 AOP 代码。
5. 注意性能问题:在使用 AOP 进行编程时,需要注意性能问题。因为 AOP 会动态地修改程序的执行流程,可能会对程序的性能产生一定的影响。因此,在使用 AOP 时,需要谨慎地选择切点和切面,以避免对程序的性能产生不良影响。
以上就是在 Android 中使用 Aspect 实现 AOP 需要注意的几点。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)