Pregunta

¿Hay alguna forma de modificar los archivos de clase para agregar anotaciones Java a ciertos métodos? Básicamente, quiero atravesar los métodos de cada archivo de clase en un archivo JAR y anotar ciertos. Tenga en cuenta que esto no está en tiempo de ejecución mientras usa el archivo JAR. Más bien, después de haber terminado, quiero tener archivos de clase modificados con las anotaciones.

Tengo acceso al código fuente, por lo que si hay un modificador automático del código fuente, eso también funcionaría ...

Supongo que necesitaré una herramienta como Javasista o ASM. Si es así, ¿cuál debería usar y cómo lo haría?

¿Fue útil?

Solución 2

Google durante una hora más o menos girado Este artículo que parece responder completamente a mi pregunta: usa ASM. Para escribir archivos de clase usando el ByTecode cambiado, use Escritor de clases.

Bueno, es hora de llegar a trabajar entonces, supongo. :)

Otros consejos

En realidad, este es un caso de uso clásico para SuppectJ:

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

Si bien le otorgaré que la manipulación de código de byte directo es más poderosa, SUPSJ es mucho más fácil de usar e inmediatamente le da advertencias de compiladores cuando está haciendo algo mal.

Además, si usas Tejido del tiempo de carga, puede dejar el frasco de la biblioteca original sin cambios, porque el tejido ocurre en el momento de la carga de clase.

Referencia:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top