2011-01-16 22 views
8

Dopo aver esaminato il modello AOP, sono sopraffatto dai modi di come e da cosa utilizzarlo nel mio progetto di primavera.Qual è l'uso più comune per AOP nel progetto di primavera

Mi piacerebbe usarlo come sistema di registro di controllo di tutta la logica di business finanziario. Sembra essere facile da integrare. Ma mi piacerebbe sentire la tua opinione su questo.

La domanda è: quali altri usi dovrei considerare che sono comuni per questo modello? Non mi dispiacerebbe rifattorizzare la mia attuale logica da utilizzare con AOP finché ci sono dei benefici.

+2

C'è una domanda un po 'simile: "A cosa serve Aspect J". http://stackoverflow.com/questions/4313789/what-is-aspectj-good-for – Ralph

risposta

9

L'utilizzo più comune è probabilmente la gestione dichiarativa della transazione utilizzando @Transactional.

7

Oltre alla registrazione/controllo e alla gestione dichiarativa delle transazioni, come accennato da Axel, direi che un altro utilizzo di AOP è come intercettore di richiesta. Ad esempio, supponiamo che tu abbia bisogno che tutte le richieste provenienti da un server vengano intercettate in modo che tu possa fare qualcosa con esso (potrebbe essere per tenere traccia di quale app sta inviando quale richiesta a quale altra app o quale database, ecc.).

+0

Questo è possibile anche utilizzando HandlerInterceptor e HandlerInterceptorAdoptor – Prateek

1

Utilizzando AOP per la registrazione di controllo è un uso perfettamente valido di AOP. È possibile disattivarlo per il test e modificarlo quando i requisiti cambiano in produzione.

L'unico lato negativo in questo caso è se si stesse pianificando di eseguire il registro di controllo tramite SQL. Potrebbe essere più efficiente implementare questo tipo di controllo come trigger direttamente nel DB.

1

Come risposta leggermente diversa da ciò che @Axel ha detto, utilizzarlo per intercettare automaticamente tutte le chiamate di accesso ai dati e applicare le transazioni in modo appropriato è fenomenale. Ho il mio set up per implementare tutte le chiamate al mio pacchetto dao che non iniziano con "get" in una transazione e quindi qualsiasi cosa eseguita in un metodo che inizia con "get" viene considerata di sola lettura. È fantastico perché, a parte la configurazione iniziale, non devo preoccuparmene, basta seguire la convenzione di denominazione.

2

È possibile utilizzare AOP per i vostri problemi di sicurezza, ad esempio consentire/non consentire l'accesso metodo. Un altro utilizzo di aop è quello di testare le prestazioni dell'applicazione.

+1

Per l'esecuzione dell'accesso al metodo allow/dissalow penso che Spring Security sia una scelta migliore di AOP. –

7

L'utilizzo più comune è dove la vostra applicazione ha preoccupazioni trasversali, cioè un pezzo di logica o codice che verrà scritto in più classi/livelli.

E questo potrebbe variare in base alle vostre esigenze. Alcuni esempi molto comuni di questi potrebbero essere:

  1. di gestione delle transazioni
  2. registrazione
  3. Gestione delle eccezioni (soprattutto quando si consiglia di avere le tracce dettagliate o avere qualche piano di recupero da eccezioni)
  4. aspetti di sicurezza
  5. Strumentazione

Speranza che aiuta.

Problemi correlati