Web層にないビジネスメソッドに監査ログを追加する必要があります。要件の1つは、ビジネスメソッドを実行したユーザとリモート端末のIPをこの監査ログに格納することです。私はAspectJを使用して、これらのすべてのメソッドを監査し、ビジネスコードなしでそれらを汚染しないようにすることにしました。 (注:私は春を使用していないよ、これは古いのStruts 1のWebアプリケーションである)AspectJでHTTPServletRequestを取得する方法
public void myMethod(Object param, HttpRequest request**){
//Bussiness code that never use request param
}
@After("bla bla matches myMethod")
public void myAdvice(JoinPoint jp){
Object request = (HttpServletRequest)jp.getArgs()[1];
//bla bla using the request to get user and IP
}
だから私の質問は、誰もがより良いかエレガントな方法でアドバイスでサーブレット要求を取得するためにどんな提案を持っているんですか?実際、myMethodにはAuditコード(実際には良い)は含まれていませんが、メソッドで直接使用されない別の開発者が混乱する可能性がある2番目のパラメータがあります。サーブレットの代わりにビジネスメソッドのアドバイスをしてください。
おそらくthis()またはargs()ポイントカットを使用できます。 – alehro