2012-03-19 8 views
3

を確認し、私は次のステートメントを越え(ページ193)に来た:たとえば春AOP:「プロの春2.5」を参考にしてCGLIBのプロキシ動作

を、CGLIBプロキシは への適切なバイトコードは、いずれかを呼び出す生成プロキシによって導入されたオーバーヘッドを劇的に減らすことができます。

私はSpringのソースコードを見て、いくつかの実験を試みましたが、このステートメントを確認できませんでした。私はそれを確認するためにどのような簡単なプログラムを書くことができますか?

答えて

0

VisualVMを使用してコードをプロファイルするか、BCELを使用してバイトコードをダンプし、アセンブリを調べます。 visualvmルートの場合は、コードをプロファイルし、スナップショットを取得し、メソッドスタックトレースを確認します。

+0

スタックトレースを取得するには、私はもっと簡単でした。私は、アドバイスされたメソッドとノンアドバイスされたメソッドの両方でThrowableを作成し、スタックトレースを出力しました。しかし、両方とも、それらは 'Cglib2AopProxy $ DynamicAdvisedInterceptor.intercept'によって呼び出され、次に 'CglibMethodInvocation'オブジェクトを作成し、それを処理しました。だから、スタックトレースポイントから、私は違いは見られませんでした。 BCELのアプローチを試みます。 – shrini1000

+0

私は、clazzがCGLIBプロキシクラスオブジェクトであるBCELの 'Repository.lookupClass(clazz)'を使って試しました。しかし、私は次の例外があります:スレッド "main"の例外java.lang.ClassNotFoundException:SyntheticRepositoryがfoo.Fooをロードできませんでした$ EnhancerByCGLIB $$ 42857850 – shrini1000

+0

私はvisualvmがSpring AOPのプロキシを介して見ることができます(私は)、私はそれを試してみると思います。 –

関連する問題