2

API をプロファイリングするオプションを探していました。Spring AOP は、メソッドをプロファイリングするためのオプションの 1 つです。

Spring AOP には、アスペクトを構成して使用するための 2 つのオプションがあります。

  1. context:load-time-weaver
  2. aop:aspectj-autoproxy

私の理解によると、最初のオプション (load-time-weaver) は、プロキシ オブジェクトを作成せずに読み込み時にウィービングを実行します。2 番目のオプション (aspectj-autoproxy) は、プロキシ オブジェクトを作成します。私はこれで正しいですか?プロキシ オブジェクトを作成すると、パフォーマンスが低下する可能性があると思います。そうじゃない?

パフォーマンスの向上を考慮すると、どのオプションを選択するのが最適ですか? 両方のアプローチの長所と短所は何ですか?

4

1 に答える 1

1

さて、ナレンドラ、まず第一に、ソフトウェアをプロファイリングするためのプロファイラーがあります。自分で何かをコーディングする必要はないかもしれません。

あなたの質問については、Spring を使用したことがないため、Spring の構成方法がわかりません。私は AspectJ ユーザーです。私が知っていることは、Spring AOPは常にプロキシを使用します(インターフェイスまたはクラスをプロキシする必要があるかどうかに応じて、JDKまたはCGLIB)。あなたが言ったように、これはおそらくプロファイリングには望ましくないものです。AspectJ は、コンパイルまたはロード時のウィービングを使用するかどうかに関係なく、プロキシを必要としないか使用しないため、より高速になるはずです。プロジェクトでSpringをまだ使用していない場合は、プロファイリングのニーズを満たすためだけにSpringに触れません. さらに、Spring AOP は Spring Bean に対してのみ機能し、メソッドのインターセプトを提供するだけで、それ以上のものはありません。AspectJ は本格的な AOP 実装であり、はるかに強力です。すでに Spring を使用している場合は、Spring AOP、Spring 内の AspectJ、または両方を組み合わせて使用​​することを選択できます。

于 2014-05-07T07:57:49.450 に答える