gpt4 book ai didi

java - @AfterReturning 拦截aspectJ调用的方法失败

转载 作者:行者123 更新时间:2023-11-30 11:21:09 24 4
gpt4 key购买 nike

这是 spring xml 文件的一部分:

    <!-- aop config -->
<aop:aspectj-autoproxy />
<bean id="fileService" class="com.test.file.FileService" />
<bean id="throughputManager" class="com.test.mbean.ThroughputManager" />

接着是java代码:

public class FileService {
public long read(Object obj,String id) throws Exception {
return 0L;
}

public long write(Object obj,String id) throws Exception {
return 0L;
}
}


@Aspect
public class ThroughputManager {

public static long TOTAL_READ_THROUGHPUT;
public static long TOTAL_WRITE_THROUGHPUT;

@AfterReturning(
pointcut="execution(* com.test.file.FileService.read(..))",
returning="size"
)
public void calculateReadThroughput(long size) throws IOException{
TOTAL_READ_THROUGHPUT+=size;
}

@AfterReturning(
pointcut="execution(* com.test.file.FileService.write(..))",
returning="size"
)
public void calculateWriteThroughput(long size) throws IOException{
TOTAL_WRITE_THROUGHPUT+=size;
}
}

当我调试程序并调用readwrite方法时,ThroughputManager中的两个方法没有被调用。我试图找到原因,但似乎有关代码的一切都很好。任何人都可以帮助找出这个 aop 调用有什么问题吗?谢谢。

最佳答案

我终于明白了。虽然我注册了FileService作为 spring 配置 xml 中的 bean,我没有调用 readwrite通过 FileService 的方法bean——来自 getBeans 的实例方法。相反,我只是 new一个FileService实例和调用这两个方法。真是个错误...

关于java - @AfterReturning 拦截aspectJ调用的方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22374341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com