java - settitle - ¿Para qué sirve AspectJ?
para que sirve settitle en java (3)
La entrada de Wikipedia le da algunos ejemplos más (pero no tantos). Por lo general, la Programación Orientada a Aspectos debe usarse solo para implementar comportamientos simples que no son parte del interés central de una clase y que son comunes a diferentes clases. Tan pronto como empiezas a poner demasiada lógica en tus aspectos, el código se vuelve realmente ilegible.
El aspecto que sugiere (registro, transacción, ...) es el aspecto más comúnmente utilizado. Yo agregaría seguridad también.
Primero permítanme señalar, que uso AspectJ y me gusta, pero qué más puedo hacer con él.
Sé que AspectJ puede ser / es utilizado para el registro. En algunos casos, se utiliza para el control de transacciones, que se implementa principalmente junto con anotaciones. AspectJ también se puede utilizar para mejorar las clases con métodos (generados por código), como lo hace Spring Roo.
Pero creo que AspectJ y AOP en general, pueden usarse para más de: registro, control de transacciones y clases parciales de simulación.
¿Cuáles son otros casos de uso útiles para AspectJ y AOP?
Uno puede usar AspectJ para aplicar algunas reglas (de diseño).
- como cada método de controlador necesita algunas anotaciones especiales
- cada clase de servicio / frontend / dto debe estar ubicada en un service / fronten / dto pacakge
- piensa más maduro como: comprobar que los emisores no tienen ninguna lógica .
Inyecte Mocks en clases que de lo contrario crearían nuevas instancias usando new. Suponga que tiene este código:
public void sendInvitationEmail(String address) {
InvitationEmail email = new InvitationEmail();
email.sendTo(address).send();
}
Y necesita reemplazar el email
por un simulacro. Entonces podría usar un Aspecto ( @Pointcut("call(InvitationEmail.new(..))")
) para "inyectar" un simulacro. - @Ver Blog JMock y AspectJ por Daniel Roop, así como Spring Roo @MockStaticEntityMethods ( Simulación de métodos estáticos utilizando Spring Aspect )
- cheque de permiso
- interrumpe la acción que lleva demasiado tiempo
- ejecutar acción en un hilo separado o incluso en el contexto de un proceso o evento diferente en otra máquina
- supervisión
- preparar cualquier dato / entorno antes de llamar y procesar los resultados después de la llamada
- recursos de apertura / cierre
EDITAR
Aunque pasaron muchos años desde que di esta respuesta, decidí agregar lo siguiente para que la respuesta sea más completa.
- control de seguridad.
- correcciones de API incorrectas o de comportamiento que no puede cambiar. Por ejemplo, el método booleano que devuelve
false
en algunas condiciones, pero debe devolvertrue
. Puedes arreglar esto usando AspectJ.