AspectJ è un, per mancanza di una parola migliore, "Aspetto puro". Il criterio è che può essere ampiamente utilizzato in ogni circostanza. Qualsiasi aspetto, su qualsiasi classe, in qualsiasi momento.
Detto questo, la tecnica dell'aspetto delle chiamate al metodo di intercettare e avvolgere, ha trovato la sua strada in modo pervasivo in Java. Tuttavia, questa tendenza verso la specializzazione del concetto di aspetto generico per scopi specifici.
Un "aspetto" molto precoce è stato fatto con le prime funzionalità EJB. Ciò ha comportato l'uso di file XML per aumentare le classi e le interfacce, in modo che il contenitore potesse creare oggetti proxy che avvolgessero i richiami di metodi in contesti di transazione. Questo involucro dei metodi è un concetto di aspetto, ma le prime specifiche EJB offrivano solo la possibilità per il caso di uso molto specifico della gestione delle transazioni.
L'arrivo di annotazioni con Java 1.5 ha aperto questo concetto di ampliamento della programmazione orientata agli aspetti.Non è che tu abbia bisogno di annotazioni per abilitarlo, piuttosto rende le strutture molto più facili da usare, poiché le annotazioni eliminano la configurazione esterna dei metadati (usando, forse, i file XML).
Così, ora, molti sistemi Java utilizzano i concetti della programmazione orientata agli aspetti, in genere attraverso la riflessione e le annotazioni, per implementare determinate funzionalità. Che si tratti di un'iniezione di istanze, di metodi, convalida, ecc.
Il componente chiave di tutto questo è un meccanismo per intercettare la chiamata al metodo. AspectJ ha funzionato cambiando la classe di destinazione al volo, piuttosto che l'interposizione di un intermediario. EJB funziona creando proxy su interfacce (qualcosa che puoi fare da subito in Java), e poi quando un programma chiede al contenitore un'istanza, fornisce un proxy supportato dall'istanza reale.
Quindi, per abilitare AOP "generico", ovunque, sempre, è sicuramente necessario qualcosa di ampio come AspectJ. Ma per ottenere molti dei benefici, non è necessario andare così lontano. Una semplice classe Factory e un'interfaccia possono fare il lavoro prontamente.
Sì, certo. Non hai nemmeno bisogno di un altro framework (come Spring AOP). A proposito di tempo, AspectJ non è riuscito a guadagnare slancio a proposito. Attributi + riflessione per esempio possono essere un modo per fare AOP per un framework. –
sì buona domanda .. possiamo scrivere il tipo di riflessione del codice e usare espressioni regolari per chiamare i metodi basati su istruzioni come prima, dopo e intorno .. possiamo aggirare ma ha bisogno di un po 'più di tempo .. –
, grazie ragazzi. sembra che io abbia un modo di fare ancora intatto, perché la riflessione e così (legata all'introspezione) è per il momento molto al di là del mio scopo. lol Suppongo che un altro modo di porre la mia domanda sarebbe, come convertire un (semplice) programma in codice AspectJ in un puro programma solo Java con il minimo di modifica possibile? – user3578836