2011-01-31 10 views
2

多くのフレームワーク(Struts、Spring、Hibernate、AspectJ)はバイトコード操作を内部的に使用していると聞いています。バイトコード操作を使用する魅力的な理由は何ですか?私は、少なくとも特定のフレームワークごとにユースケースを持つ答えを期待しています。一般的なフレームワークではバイトコード操作を内部的に使用するのはなぜですか?

答えて

10

これらのフレームワークはクラスのバイトコードを操作するので、それらの機能のサポートを追加できます。例えば、Hibernateは、エンティティが更新されたとき(ダーティになる)、遅延ロードを行うためのコードを含むサブエンティティのプロキシを返すために、クラスのgetter/setterにコードを記述することができます。

Aspectjは、要求したアスペクトを追加するためにバイトコードを操作します。たとえば、クラスのすべてのメソッドにアドバイスを追加して、呼び出されるときにログに記録する場合、aspectjは各メソッドにバイトコード(ログを実行する)を追加することができます。

+0

ええ私はあなたの意見を持っていますが、Springフレームワークとstruts2がフレームワークでバイトコード操作をどのように使用しているか –

関連する問題