3

特定のメソッドにJava注釈を追加するために.classファイルを変更する方法はありますか?基本的には、各クラスファイルのメソッドをjarファイルでトラバースして、特定のファイルに注釈を付けたいと思います。 jarファイルを使用しているときは実行時ではありません。むしろ、私がやった後、私は注釈でクラスファイルを修正したいと思っています。メソッドにJava注釈を遡及的に追加しますか?

としてうまく機能自動ソースコードの修正が、ありますので、もし私は、このようなJavassistASMなどのツールが必要になりますと仮定しています...、

をソースコードへのアクセス権を持っています。もしそうなら、どちらを使うべきですか?それについてどうすればいいですか?

+0

それはの.classファイルのメソッドフィールドに適切な属性を追加することでこれを行うには確かに可能です。私はこれを行うためのツールを使って多くの経験を持っていません。 – templatetypedef

+0

それは私が推測することを奨励している...誰かがすぐに答えてくれることを願っています。 :) – Epaga

答えて

4

グーグルで1時間ほど回ってthis articleが完全に私の質問に完全に答えていると思われます:使用ASM。変更されたバイトコードを使用してクラスファイルを書き込むには、ClassWriterを使用します。

これでうまくいくまでには時間がかかると思います。 :)

6

実は、これはAspectJのための古典的なユースケースである:私は、直接バイトコード操作がより強力であることを認めるだろうが

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

は、AspectJのがはるかにユーザーフレンドリーであり、それはすぐにできます間違ったことをしているときにコンパイラの警告が表示されます。

また、Load Time Weavingを使用すると、クラスロード時に製織が行われるため、元のライブラリのjarを変更しないままにすることができます。

参考:

関連する問題