为什么 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 工作经验

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)