我在尝试从类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);
}
}
答案 0 :(得分:1)
感觉就像你正在使用正典拍摄一个错误。只需创建一个基本方法,首先保存并随后调用抽象方法。子类需要实现该方法。
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的解决方案仍然有效。您可能希望将save方法设置为final(或根据您的需要进行私有)。