我想圍繞延伸,看起來像這樣的接口的方法做了一個建議:建議各地方法實現擴展接口
public interface StructureService {
void delete(FileEntry entry);
}
public interface FileService extends StructureService {
void dummy();
}
實現像下面這些看起來類:
public class DbStructureService implements StructureService {
public void delete(FileEntry entry) {
}
}
public class DbFileService extends DbStructureService implements FileService {
public void dummy() {
}
}
我想匹配刪除方法,但只適用於實現FileService的類。
我已經定義以下方面:
public aspect FileServiceEventDispatcherAspect {
pointcut isFileService() : within(org.service.FileService+);
pointcut delete(FileEntry entry) :
execution(void org.service.StructureService.delete(..))
&& args(entry) && isFileService();
void around(FileEntry entry) : delete(entry) {
proceed(entry);
}
}
的問題是,只要我已啓用isFileService切入點將匹配沒有類;即使有很多methos應該匹配
如果我將within(org.service.FileService+)
替換爲within(org.service.StructureService+)
它也可以正常工作。
我嘗試過試用這個()等,但沒有成功。我如何在aspectj中做到這一點?
編輯: 更新了實現接口的類的外觀。我認爲這種情況可能很難提供建議,因爲在DbFileService中沒有重寫的方法
我使用二進制編譯時編織,如果這事宜 – jontro
對於編譯時編譯此代碼的源代碼是正確的。可能問題在於「二元」,儘管不應該存在。 – alehro
是的,我編輯了我的問題。你認爲這是aspectj不支持的場景嗎?在子類中建議沒有真正的功能 – jontro