我正在尝试使用 AOP 来分析数据访问类中的方法。简化后,它看起来像这样:
package com.example.dataservices.dao;
public class DaoImpl extends AbstractDao implements Dao
{
protected static abstract class CallbackHandler
{
abstract void processRow(final ResultSet rset);
abstract DataPayload getPayload();
boolean isCompanyPermitted(final Long companyId)
{
return true;
}
boolean isUserPermitted(final Long userId)
{
return true;
}
}
protected static class CompanyCallbackHandler extends CallbackHandler
{
DataPayload payload;
void processRow(final ResultSet rset)
{
if (isUserPermitted(rset.getlong(1))) {
// do stuff
}
}
DataPayload getPayload(final Long companyId)
{
this.payload = new DataPayload();
// query the database
return this.payload;
}
}
public DataPayload getCompanyPayload(final Long companyId)
{
final CallbackHandler handler = new CompanyCallbackHandler();
return handler.getPayload(companyId);
}
}
我的切入点表达式如下所示:
@Pointcut("执行(* com.example.dataservices.dao.. ( ..))")
但是这个表达式只匹配 getCompanyPayload() 方法。我正在尝试匹配 CompanyCallbackHandler 从其父类 CallbackHandler 继承的 isUserPermitted() 等方法。
任何建议将不胜感激。
克里斯