国産DIコンテナSeasar その8
■ このスレッドは過去ログ倉庫に格納されています
0435424
2007/01/11(木) 23:13:17ClassFileTransformerをきちんと設計すればおk。
ロードしようとしたクラスローダが引数に渡される。
(実際にはdefineClassを実行したクラスローダ)
ブートストラップクラスローダの場合はnullが渡されるが。
動的に作ったクラスローダでdefineClassを行えば、
引数にそのクラスローダが渡されるので、
変換したくなきゃreturn null;でおk。
変換したけりゃ、新しいバイト列を作って返せばいい。
クラスローダとの相性はあまり関係ないと思われ。
ちなみに、Instrumentationのインスタンスはpremainで渡されるが、
その後は好きなところで使用してもいいので、
premainで適当なクラスのstaticフィールドに格納するのもよし。
後からアプリケーション側でロードのフックの実行の制御するのも可能。
■ このスレッドは過去ログ倉庫に格納されています