多くのメソッドを持つサービス インターフェイスがあり、そのすべてが Request オブジェクトを受け取り、Response オブジェクトを返します。すべてのリクエスト オブジェクトには共通の祖先があり、すべての応答オブジェクトには異なる共通の祖先 (成功フラグとメッセージ フィールドがあります) があります。
ここで、アクセス許可などをチェックし、サービス呼び出しを実行し、何かが失敗した場合に失敗コードを含む Response オブジェクトを返すというアラウンド アスペクトが必要です。問題は、作成する Response オブジェクトのタイプを知る必要があることです。戻り値の型にアクセスできるポイントカット式はありますか? もしかして、こういうこと?
@Around(value = "execution(public *"
+ " com.mycompany.MyService+.*(..))"
+ " && args(request)"
+ " && returning( returnType)" // something like this would be nice
, argNames = "request,returnType")
public Object handleServiceCall(final ProceedingJoinPoint pjp,
final Request request,
final Class<? extends Response> returnType){ ... }