3

特定のメソッドに Java アノテーションを追加するために .class ファイルを変更する方法はありますか? 基本的に、jar ファイル内の各クラス ファイルのメソッドをトラバースし、特定のメソッドに注釈を付けたいと考えています。これは、jar ファイルの使用中は実行時ではないことに注意してください。むしろ、作業が完了したら、注釈を付けてクラス ファイルを変更したいと考えています。

私はソース コードにアクセスできるので、自動ソース コード修飾子があれば、それも同様に機能します...

JavassistASMなどのツールが必要になると思います。もしそうなら、私はどれを使うべきですか?

4

2 に答える 2

8

実際、これはAspectJの典型的なユースケースです。

declare @method : public * BankAccount+.*(..) : @Secured(role="supervisor")

直接バイトコード操作がより強力であることを認めますが、AspectJははるかにユーザーフレンドリーであり、何か間違ったことをしているときにすぐにコンパイラー警告を出します。

また、Load Time Weavingを使用する場合、ウィービングはクラスのロード時に行われるため、元のライブラリjarを変更しないでおくことができます。

参照:

于 2011-02-01T13:23:58.763 に答える
4

1時間ほどグーグルで検索すると、この記事が表示され、私の質問に完全に答えているようです。ASMを使用してください。変更されたバイトコードを使用してクラスファイルを書き込むには、ClassWriterを使用します。

さて、それでは仕事に取り掛かる時間だと思います。:)

于 2011-01-28T10:23:54.923 に答える