studio sirve settitle que programacion para móviles libro desarrollo curso aplicaciones java spring jboss aop use-case

java - sirve - ¿Cuáles son los posibles casos de uso de AOP?



programacion android pdf 2018 (11)

Me gustaría hacer una idea de cuáles son los casos posibles para la participación efectiva de AOP en el diseño de aplicaciones. Todo lo que he conocido hasta ahora es:

  • relacionado con el registro
  • revisiones de seguridad
  • Gestión de transacciones
  • retoque de una aplicación heredada

¿Algo más?

(No tiene que ser necesariamente un AOP basado en proxy de Spring, sino JBoss AOP).

( Pregunta relacionada )


Almacenamiento en caché a nivel de método, si su método no tiene estado (me refiero a que devuelve el mismo valor cuando se lo invoca repetidamente con los mismos valores de parámetro). Esto es más efectivo en el caso de los métodos DAO porque evita el golpe de la base de datos.


INotifyPropertyChanged y horrores similares.

Básicamente, donde sea que haya un código que se ve así, usa un aspecto y listo.


Lo utilizamos para la administración de licencias de software, es decir, permitimos que el software se ejecute solo si la computadora tiene algunas licencias específicas instaladas. No es tan diferente de los usos mencionados, ya que es una forma de control de seguridad.

Publiqué una entrada de blog que describe una implementación práctica here


Para ver la cobertura de AOP en términos de aplicabilidad, realmente recomiendo leer el libro Aspect-Oriented-Software-Development-Use-Cases . Este libro elabora casos de uso de requisitos funcionales y no funcionales utilizando AOP. Después de eso, verá que los aspectos se pueden usar para más requisitos que el registro, seguimiento, seguridad, etc.


Puedo darte dos ejemplos donde lo usamos:

  • Registrar objetos automáticamente en JMX para la administración remota. Si una clase se anota con nuestra anotación @AutoRegister , tenemos un aspecto que busca nuevas instancias de esa clase y las registra en JMX automáticamente.

  • Registro de auditoría (el caso de uso estándar de AOP). Es un poco grosero, pero el enfoque general es anotar métodos que representan una acción auditable. Combinado con algo como Spring Security, podemos tener una muy buena idea de:

    • quien es el usuario
    • qué método están invocando
    • qué datos están proporcionando
    • a qué hora se invocó el método
    • si la invocación fue exitosa o no (es decir, si se lanzó una excepción)

También recomendaré aspectos para:

  • Llamadas de método asíncrono
  • Supervisión

Con Spring y tcServer (desarrollador), puede monitorear fácilmente todos sus beans Spring con la anotación @Component. Puede ver el tiempo utilizado, los datos de entrada y retorno, incluidas las excepciones.



Usamos AspectJ para lograr AOP. Los casos de uso además de los mencionados anteriormente son los siguientes:

  • Restringir el acceso a llamadas de método a solo algunas clases.
  • Anotar automáticamente los métodos / clases / campos seleccionados.

Verificación en tiempo de ejecución de los contratos de código. Contratos de código para .NET usan AOP para

Runtime Checking. Nuestro reescritor binario modifica un programa al inyectar los contratos, que se verifican como parte de la ejecución del programa.


  • Manejo de excepciones: no es necesario repetir la horrible lista de intentos ... atrapar, atrapar, atrapar, etc. - también significa que se garantiza que el manejo de excepciones sea consistente.
  • Monitoreo del rendimiento: muy útil ya que el uso de un aspecto no es intrusivo y se puede hacer después del hecho y luego se apaga cuando ya no es necesario.

  • Lectura / escritura de bloqueos . En lugar de replicar el mismo fragmento, utilicé un aspecto para definir los métodos que necesitaban un bloqueo de lectura o exclusivo.