gpt4 book ai didi

java - Spring AOP : Advice not called in abstract class

转载 作者:行者123 更新时间:2023-12-01 11:27:04 26 4
gpt4 key购买 nike

我尝试在从类 DefaultRequestHandler 的实现中调用 getResponse() 后以及每次调用时保存一些数据。但这不起作用,我错过了什么?

@Aspect
public abstract class RequestHandler {
protected ServiceProvider response;
protected ServiceProvider request;

@Pointcut
public abstract ServiceProvider getResponse();


@After("com.mypackage.RequestHandler.getResponse()")
public void save(ServiceProvider request, ServiceProvider response){
persistence.save(request, response);
}

}

最佳答案

感觉就像你在用佳能来射击 bug 。只需创建一个基本方法,首先保存然后调用抽象方法。子类需要实现该方法。

public abstract class DefaultRequestHandler {
protected ServiceProvider response;
protected ServiceProvider request;

public final ServiceProviderTxn getResponse() {
ServiceProviderTxn responseTxn = doGetResponse();
save(request,responseTxn);
return responseTxn;
}

protected abstract ServiceProviderTxn deGetResponse();

public void save(ServiceProviderTxn request, ServiceProviderTxn response){
persistenceService.save(request, response);
}

}

没有 AOP 且仍然有效的解决方案。您可能希望将保存方法设为 final方法(或根据您的需要设为私有(private)方法)。

关于java - Spring AOP : Advice not called in abstract class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30731741/

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