aop - 为什么 List.add() 方法的方面不起作用?
问题描述
如何修复代码?方面编译但不工作。这样我就可以拦截list.add(new MyClass())方法并获取添加的对象?
@Component
public class AppField {
List<MyClass> list = new ArrayList<>();
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext("com.index.aoptest.field");
AppField bean = context.getBean(AppField.class);
bean.addIntoList();
}
public void addIntoList() {
// I want to intercept this method
list.add(new MyClass());
}
}
@Configuration
@EnableAspectJAutoProxy
public class ConfigField {
@Bean
public AspectField aspectField() {
return new AspectField();
}
}
@Aspect
public class AspectField {
//don't work
@Pointcut("execution(boolean java.util.List.add(*)) && " +
"args(param) && " +
"within(com.index.aoptest.field.AppField)"
)
public void beforeSampleMethod(List<Object> param) {
}
@Before("beforeSampleMethod(param)")
public void printMes(List<Object> param) {
System.out.println(">>>>>>>>>>>>>>>>LOG>>>>>>>>>>>>>>>>");
}
// don't work
@Before("within(com.index.aoptest.field.AppField) && " +
"execution(* java.util.List+.add(*)) && " +
"args(obj)")
public void allMethods(JoinPoint joinPoint, Object obj) {
System.out.println("allMethods" + joinPoint.getSignature().getName());
}
}
我写了这段代码,但我没有足够的使用 AOP 的经验
解决方案
推荐阅读
- xml - 如何让 xmllint 只返回 XML Element 属性?
- c# - 使用 C#.net 从 Sharepoint Online 下载文件?
- django - Django:如何检查具有 m2m 关系对象的表单是否已经存在或者是“unique_together”?
- scala - 在 Scala 中是否可以创建一个不允许使用闭包的函数?
- javascript - 如何防止复合组件重新渲染?
- scala - 按索引访问 list.toArray 的元素
- php - Symfony\Component\Debug\Exception\FatalThrowableError 类 'app\link' 未找到
- sql - 如果任何记录(具有字段值 1)具有字段值 3 具有特定值,则选择具有字段值 1 的所有记录
- xcode - 为什么 Xcode 调试器在明确对象具有非空值时将对象显示为 (null)?
- asp.net-core - XHR POST:到 API 控制器有效,到 Razor 页面失败