2011-01-16 9 views
8

Después de revisar el patrón de AOP, estoy abrumado con las formas de cómo y para qué usarlo en mi proyecto de primavera.¿Cuál es el uso más común para AOP en el proyecto de primavera

Me gustaría utilizarlo como sistema de registro de auditoría de toda la lógica de negocios financieros. Simplemente parece ser fácil de integrar. Pero me gustaría escuchar tu opinión sobre esto.

La pregunta es: ¿qué otros usos debo considerar que son comunes para este patrón? No me importaría refactorizar mi lógica actual para usarla con AOP siempre que haya beneficios para ella.

+2

Hay una, una pregunta un poco similar: "¿Para qué sirve Aspect J?". http://stackoverflow.com/questions/4313789/what-is-aspectj-good-for – Ralph

Respuesta

9

El uso más común es probablemente el manejo de transacciones declarativas usando @Transactional.

7

Además del registro/auditoría y manejo de transacciones declarativas como menciona Axel, yo diría que otro uso de AOP es como un interceptor de solicitud. Por ejemplo, supongamos que necesita que se intercepten todas las solicitudes provenientes de un servidor para que pueda hacer algo con ellas (puede ser hacer un seguimiento de qué aplicación está enviando qué solicitud a qué otra aplicación o qué base de datos, etc.).

+0

Esto también es posible usando HandlerInterceptor y HandlerInterceptorAdoptor – Prateek

1

El uso de AOP para el registro de auditoría es un uso perfectamente válido de AOP. Puede desactivarlo para probarlo y cambiarlo a medida que cambien los requisitos en la producción.

El único inconveniente en este caso es si planeaba realizar el registro de auditoría a través de SQL. Puede ser más eficaz implementar este tipo de auditoría como activadores directamente en la base de datos.

1

Como respuesta, algo diferente de lo que dijo @Axel, usarlo para interceptar automáticamente todas sus llamadas de acceso a datos y aplicar transacciones de manera apropiada es fenomenal. Tengo la mía configurada para implementar todas las llamadas a mi paquete dao que no comienzan con "get" en una transacción y todo lo que se realiza en un método que comienza con "get" se trata como de solo lectura. Es fantástico porque, aparte de la configuración inicial, no tengo que preocuparme por eso, simplemente siga la convención de nomenclatura.

2

Puede usar AOP para sus problemas de seguridad, por ejemplo, permitir/no permitir el acceso a métodos. Otro uso de aop es probar el rendimiento de tu aplicación.

+1

Para ejecutar el acceso de método de permitir/desactivar, creo que Spring Security es una mejor opción que AOP. –

7

El uso más común es cuando su aplicación tiene problemas de corte transversal, es decir, una pieza de lógica o código que se va a escribir en varias clases/capas.

Y esto puede variar según sus necesidades. Algunos ejemplos muy comunes de estos podrían ser:

  1. gestión de transacciones
  2. registro
  3. manejo de excepciones (sobre todo cuando es posible que desee tener rastros detallados o tiene algún plan de recuperación de excepciones)
  4. aspectos de seguridad
  5. Instrumentación

Espero que ayude.

Cuestiones relacionadas