Ретро активно добавлять Java-аннотации к методам? - PullRequest
3 голосов
/ 28 января 2011

Есть ли способ изменить файлы .class, чтобы добавить аннотации Java к определенным методам? В основном я хочу обойти методы каждого файла класса в файле JAR и аннотировать определенные. Обратите внимание, что это не во время выполнения при использовании файла JAR. Скорее после того, как я закончу, я хочу изменить файлы классов с аннотациями.

У меня есть доступ к исходному коду, так что, если есть автоматический модификатор исходного кода, это также сработает ...

Я предполагаю, что мне понадобится такой инструмент, как Javassist или ASM . Если да, то какой из них мне следует использовать и как мне поступить?

Ответы [ 2 ]

8 голосов
/ 01 февраля 2011

На самом деле, это классический вариант использования AspectJ:

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

В то время как я предоставлю вам, что прямое манипулирование байтовым кодом является более мощным, AspectJ гораздо более удобен для пользователя, и он сразу же дает вам предупреждения компилятора, когда вы делаете что-то не так.

Кроме того, если вы используете Плетение времени загрузки , вы можете оставить исходную библиотечную банку без изменений, потому что переплетение происходит во время загрузки класса.

Справка:

4 голосов
/ 28 января 2011

Google в течение часа или около того перевернул эту статью , что, кажется, полностью отвечает на мой вопрос: используйте ASM Для записи файлов классов с использованием измененного байт-кода используйте ClassWriter .

Ну, тогда, наверное, пора на работу. :)

...