2
多くのフレームワーク(Struts、Spring、Hibernate、AspectJ)はバイトコード操作を内部的に使用していると聞いています。バイトコード操作を使用する魅力的な理由は何ですか?私は、少なくとも特定のフレームワークごとにユースケースを持つ答えを期待しています。一般的なフレームワークではバイトコード操作を内部的に使用するのはなぜですか?
多くのフレームワーク(Struts、Spring、Hibernate、AspectJ)はバイトコード操作を内部的に使用していると聞いています。バイトコード操作を使用する魅力的な理由は何ですか?私は、少なくとも特定のフレームワークごとにユースケースを持つ答えを期待しています。一般的なフレームワークではバイトコード操作を内部的に使用するのはなぜですか?
これらのフレームワークはクラスのバイトコードを操作するので、それらの機能のサポートを追加できます。例えば、Hibernateは、エンティティが更新されたとき(ダーティになる)、遅延ロードを行うためのコードを含むサブエンティティのプロキシを返すために、クラスのgetter/setterにコードを記述することができます。
Aspectjは、要求したアスペクトを追加するためにバイトコードを操作します。たとえば、クラスのすべてのメソッドにアドバイスを追加して、呼び出されるときにログに記録する場合、aspectjは各メソッドにバイトコード(ログを実行する)を追加することができます。
ええ私はあなたの意見を持っていますが、Springフレームワークとstruts2がフレームワークでバイトコード操作をどのように使用しているか –