4

Spring AOPを使用してNameMatchMethodPointcutAdvisorBeanNameAutoProxyCreatorを使用してクラスのプロキシを作成する場合、これは基本的にオブジェクトへのすべての呼び出しをプロキシしますが、一致したメソッドにのみアドバイスを適用するか、何らかの方法でそれらのメソッドのみを持ち、通常の傍受されることになっている呼び出しのオブジェクト?

ちなみに、オブジェクトへのすべての呼び出しをプロキシし、一致するメソッドでのみAdvisorを呼び出すことは理解していると思いますが、これを確認するための適切な例/投稿が見つかりません。

4

2 に答える 2

6

使用する手法によって異なります。proxy-target-class(これは、aop構成の属性によって構成可能です)

  • JDK動的プロキシは、インターフェースごとのプロキシです。前述のように、インターフェースの各メソッドはプロキシを経由し、一致する場合は「アドバイスされた」メソッドである場合は、アドバイザーが適用されます。それ以外の場合は、元のオブジェクトに委任されます

  • CGLIBプロキシは、実質的に、具象クラスの実行時に定義されるサブクラスです。これについては確信が持てませんが、「アドバイスされた」メソッドのみがオーバーライドされ、残りはスーパークラスの定義を保持していると思います。

ただし、どのメカニズムを使用しても、次のようになります。

  • プロキシがどの程度正確に実装されているかは問題ではありません
  • これはパフォーマンスに大きな影響を与えません-神話を暴く:プロキシは、プロキシパフォーマンスの神話に関するSpringチームのパフォーマンスに影響を与えます
于 2010-02-19T20:10:37.123 に答える
0

または、これらのメソッドのみを持ち、傍受されるはずの呼び出しに通常のオブジェクトを使用する Proxied オブジェクトを何らかの方法で作成しますか?

これは実際にどのように機能しますか?クラスがプロキシされているクラスへの参照を持っている場合、そのクラスへの参照は 1 つだけです。プロキシ クラスまたは非プロキシ クラスのいずれかを呼び出す必要があります。Spring は、呼び出しているメソッドを認識できないため、アドバイスされたメソッドを呼び出す必要がある場合は 1 つのタイプを提供し、そうでない場合は別のタイプを提供することはできません。

于 2010-02-19T20:12:30.290 に答える