多くのフレームワーク(Struts、Spring、Hibernate、AspectJ)が内部でバイトコード操作を使用していると聞きました。バイトコード操作を使用する説得力のある理由は何ですか?私は、特定のフレームワークごとに少なくともユースケースを備えた答えを期待しています。
1258 次
1 に答える
12
これらのフレームワークは、クラスのバイトコードを操作して、機能のサポートをクラスに追加できるようにします。たとえば、Hibernate はクラスのゲッター/セッターにコーディングして、エンティティが更新されたとき (ダーティになったとき) を追跡したり、遅延読み込みを行うコードを含むサブエンティティのプロキシを返したりすることができます。
Aspectj はバイトコードを操作して、ユーザーが強制するように要求したアスペクトを追加します。たとえば、クラスのすべてのメソッドにアドバイスを追加して、それらが呼び出されたときにログに記録する場合、aspectj は各メソッドに (そのログを実行する) バイトコードを追加できます。
于 2011-01-31T05:24:38.827 に答える