Spring AOP:未在抽象中调用通知 class
Spring AOP: Advice not called in abstract class
我正在尝试在从 class 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);
}
}
感觉你在用卡农打虫子。只需创建一个基本方法,该方法首先保存然后调用抽象方法。子类需要实现该方法。
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 的解决方案,它仍然有效。您可能希望将保存方法也设置为最终方法(或私有,具体取决于您的需要)。
我正在尝试在从 class 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);
}
}
感觉你在用卡农打虫子。只需创建一个基本方法,该方法首先保存然后调用抽象方法。子类需要实现该方法。
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 的解决方案,它仍然有效。您可能希望将保存方法也设置为最终方法(或私有,具体取决于您的需要)。