我想使用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()。
任何意見將不勝感激。
克里斯
你使用Spring AOP還是AspectJ? –