- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个方法,它确实返回一个列表:
public List<ReportReconciliationEntry> getMissingReports(List<ReportReconciliationEntry> expectedReports,
List<GeneratedReportContent> generatedReports){
...
return missingReports;
}
但这个方法从未被调用:
@AfterReturning(value = "execution(* com.XXX.YYY.ZZZ.service.ReconciliationService.getMissingReports(..)) && args(expectedReports,generatedReports)", argNames = "expectedReports,generatedReports,missingReports", returning = "missingReports")
public void logReportReconciliationException(List<ReportReconciliationEntry> expectedReports, List<GeneratedReportContent> generatedReports, List<ReportReconciliationEntry> missingReports) {
final String notApplicable = properties.getNotApplicable();
ReportingAlertMarker marker = ReportingAlertMarker.builder()
.eventType(E90217)
.userIdentity(notApplicable)
.destinationIp(properties.getDestinationIp())
.destinationPort(properties.getDestinationPort())
.dataIdentity(notApplicable)
.resourceIdentity(notApplicable)
.responseCode(404)
.build();
MDC.put(SYSTEM_COMPONENT, properties.getBpsReportGenerationService());
System.out.println(missingReports);
logWrapper.logError(marker, "SDGFHDZFHDFR!!");
}
我用断点检查第一个方法的返回。它确实返回一个列表,但 @AfterReturning 永远不会被调用,尽管 IDE 显示“导航到 AOP 建议”图标。我错过了什么?
这就是我的类(class)的样子:
@Component
@Aspect
@Slf4j
public class ReportingAlertAspect {
private final LogWrapper logWrapper;
private final ReportingAlertProperties properties;
public ReportingAlertAspect(final ReportingAlertProperties properties, final LogWrapper logWrapper) {
this.logWrapper = logWrapper;
this.properties = properties;
}
....
}
我有另一个类,其中有一个函数,这个类工作正常:
@Component
@Aspect
@Slf4j
public class ReportingInfoAspect {
private final LogWrapper logWrapper;
private final ReportingAlertProperties properties;
@AfterReturning(value = "execution(* com.xxx.yyy.zzz.qqq.ReconciliationService.reconcile(..)) && args(windowId)", argNames = "windowId,check",
returning = "check")
public void logSuccessfulReportReconciliation(ReconciliationEvent windowId, boolean check){
String notApplicable = properties.getNotApplicable();
MDC.put(SYSTEM_COMPONENT, properties.getBpsReportGenerationService());
ReportingAlertMarker marker = ReportingAlertMarker.builder()
.eventType(E90293)
.userIdentity(notApplicable)
.destinationIp(properties.getDestinationIp())
.destinationPort(properties.getDestinationPort())
.dataIdentity(notApplicable)
.resourceIdentity(notApplicable)
.responseCode(200)
.build();
if (check){
logWrapper.logInfo(marker, "All reports for windowId {} were generated successfully", windowId.windowId);
}
}
}
最佳答案
我发现了问题。getMissingReports 方法是从同一类中的另一个方法调用的。这是自调用的情况,并且该方法从未通过代理调用。
这就是类的样子:
@Service
@RequiredArgsConstructor
public class ReconciliationService {
private final ReconciliationRepository reconciliationRepository;
private final ReportSafeStoreClientService reportSafeStoreClientService;
@Handler
public whatever whatever() {
...
getMissingReports()
}
}
您可以找到更多信息here
关于java - 为什么 @AfterReturning 从未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319563/
@AfterReturning(pointcut)和@AfterReturning(value)有什么区别 @AfterReturning(pointcut = "execution(* my.jav
这个问题已经有答案了: Why does self-invocation not work for Spring proxies (e.g. with AOP)? (1 个回答) 已关闭2 年前。 我
这是 spring xml 文件的一部分: 接着是java代码: public class FileService { public long read(Object obj,Stri
我需要在执行函数后执行任务。我为此使用了 Aspect。但我有些困惑。 我在 Spring 服务中有一个函数 A()。 @Transactional(readOnly = false,
我有个小问题。我在某些函数返回后调用 AfterReturning 函数,而我的 AfterReturning 函数工作了两次,我不希望这样。这是代码: @Aspect @Component @Con
我有这个方法,它确实返回一个列表: public List getMissingReports(List expectedReports,
我有一个可以更新字段的方法,但我想在执行该方法之前检查该值,以便我可以确定操作(编辑/添加/删除)。 @Before(value = "execution(* com.test.app.*.servi
Spring配置文件
我正在学习 AOP spring 并尝试一些示例。关于@AfterReturning,我的理解是只有当目标成功返回并且匹配切入点时才会调用该方法。然而,在我的例子中,如下所示,我有一个切入点,它定义了
我已经使用 Spring AOP 为每个保存操作设置了日志记录,其中我用 @Transactional 进行了标记。问题是当我的 save 方法抛出异常并仅使用回滚标记事务时,但使用 AOP 的日志记
在 Web 应用程序中,我使用 Spring AOP 检查来电时对我的服务的授权,并在返回结果时管理消息(信息、警告、错误)。使用一个方面可以节省我的代码行并概括我的服务行为(而且它看起来很性感 ^^
我有以下内容: @AfterReturning("executionOfTrustedAnnotatedMethod()") public void afterReturningFromTrusted
我是一名优秀的程序员,十分优秀!