2010-08-19 3 views
5

Stavo lavorando con GUICE alcuni mesi fa e ora quando torno ad esso, trovo che devo rileggere la documentazione e gli esempi di Guice per capire cosa ho fatto con il mio codice.Guice vs AspectJ

Tuttavia, quando guardo AspectJ è tutto troppo intuitivo. È un'estensione intuitiva del linguaggio Java. Sento che posso già sedermi e scrivere codice AspectJ.

Pertanto, sono tentato di abbandonare la mia ricerca di Guice e andare con AspectJ. Soprattutto il fatto che Spring stia generando il codice AspectJ.

Quali caratteristiche di Guice ci sono sopra AspectJ che dovrebbe scoraggiarmi dall'abbandono di Guice?

Perché Google non dovrebbe abbandonare Guice e utilizzare invece AspectJ?

Vice Versa, quali sono le caratteristiche di AspectJ che mi incoraggerebbero ad abbandonare Guice, oltre all'intuitività di esso?

Se potessi avere il permesso di "intrecciare" in una domanda qui, che cosa impedisce che il linguaggio Java venga unito a AspectJ o fornisca "aspetti" simili in una versione futura di Java?

Nota: al grilletto facile eliminare-azillas, mi rendo conto che questa domanda potrebbe essere troppo generico - ma se sapessi quali ulteriori specifiche per chiedere, allora avrei nemmeno bisogno di chiedere, ma solo google/bing per quello So che non lo so. Come puoi vedere, la mia conoscenza di Guice si è degradata così male che non riconosco nemmeno la mia calligrafia.

+0

Ho sempre esattamente la stessa sensazione. Perché qualche framework di dipendenze per le dipendenze se ho AspectJ? –

risposta

19

Come dice Peter, Guice e AspectJ sono cose completamente diverse. Guice fa un'iniezione di dipendenza, risparmiando molte scritture di fabbrica rendendo il codice flessibile e facile da testare e aggiungere cose utili come gli ambiti. Succede anche per permettere un modo molto semplice, facile di fare AOP tramite il metodo di intercettazione (con la configurazione programmatica di quali metodi vengono intercettati, piuttosto che una DSL). Questo è effettivamente solo un altro bonus che fornisce e non il suo obiettivo principale.

Per quanto riguarda il motivo per cui AspectJ non è fuso in Java ... Non mi sento come se molte persone vorrebbero che ciò accadesse. AOP è potente, ma in modo pericoloso. Mentre è certamente grande per alcuni usi e semplifica il codice molto in questi casi, se abusato potrebbe rendere molto più difficile da comprendere ciò che accade in un programma.

7

Secondo me AspectJ e Guice fanno cose diverse.

Guice inietta le dipendenze e AspectJ si occupa dei problemi trasversali.

Se si utilizza la primavera allora davvero c'è meno valore utilizzando Guice poiché non v'è troppa sovrapposizione e quindi la simbiosi di primavera/AspectJ è una soluzione convincente.

Personalmente mi piacciono di più per i progetti non di primavera a causa del suo peso più leggero.

2

Spring è basato sull'integrazione delle dipendenze e sulla programmazione orientata agli aspetti.

Guice è un motore di iniezione dipendente.

AspectJ è un motore orientato all'aspetto.

Vedere la differenza? Guice e AspectJ sarebbero complementari; La primavera ha già entrambi.

Si deve menzionare che Spring supporta il proprio AOP basato su interceptor, che non richiede la manipolazione del codice byte, oltre ad AspectJ.

+4

Guice include il proprio supporto AOP: http://code.google.com/p/google-guice/wiki/AOP –

+0

Non lo sapeva; grazie. Sembra l'intercettore del metodo di Spring. Era parte del Guice originale di Bob Lee o aggiunto dopo la prima uscita? – duffymo

+1

AbstractModule.bindInterceptor fa parte di Guice 1.0. –