Potresti voler includere Spring nell'elenco dei framework di Dependency Injection che stai prendendo in considerazione. Ecco alcune risposte alle tue domande:
Accoppiamento al quadro
Pico - Pico tende a scoraggiare l'iniezione di setter, ma a parte questo, le tue classi non hanno bisogno di sapere di Pico. È solo il cablaggio che deve sapere (vero per tutti i framework DI).
Guice - Guice ora supporta le annotazioni JSR 330 standard , quindi non sono più necessarie annotazioni specifiche Guice nel codice. Spring supporta anche queste annotazioni standard. L'argomento usato dai ragazzi di Guice è che senza un processore di annotazioni Guice in esecuzione, questi non dovrebbero avere un impatto se decidi di utilizzare un framework diverso.
Spring - Spring mira a consentire di evitare qualsiasi menzione del framework Spring nel codice. Poiché hanno molti altri helper / utilità ecc., La tentazione è piuttosto forte di dipendere dal codice Spring, però.
Prestazione
Pico - Non ho molta familiarità con le caratteristiche di velocità di Pico
Guice - Guice è stato progettato per essere veloce e il confronto menzionato nella referenza ha dei numeri. Certamente, se la velocità è una considerazione primaria, è opportuno considerare l'uso di Guice o il cablaggio manuale
Primavera : la primavera può essere lenta. C'è stato del lavoro per renderlo più veloce e l'uso della libreria JavaConfig dovrebbe accelerare le cose.
Facilità di utilizzo
Pico - Semplice da configurare. Pico può prendere alcune decisioni sui cavi automatici per te. Non è chiaro come si ridimensiona a progetti molto grandi.
Guice - Semplice da configurare, devi solo aggiungere annotazioni ed ereditare da AbstractModule per legare le cose insieme. Si adatta bene a progetti di grandi dimensioni poiché la configurazione è ridotta al minimo.
Spring : relativamente facile da configurare, ma la maggior parte degli esempi utilizza Spring XML come metodo di configurazione. I file XML Spring possono diventare molto grandi e complessi nel tempo e richiedere tempo per il caricamento. Prendi in considerazione l'utilizzo di una miscela di Spring e iniezione di dipendenza a manovella per superare questo problema.
Dimensione della comunità
Pico - Piccolo
Guice - Medio
Primavera - Grande
Esperienza
Pico - Non ho molta esperienza con Pico ma non è un framework ampiamente utilizzato, quindi sarà più difficile trovare risorse.
Guice - Guice è un framework popolare e la sua attenzione alla velocità è benvenuta quando hai un progetto di grandi dimensioni che stai riavviando molto in fase di sviluppo. Ho una preoccupazione per la natura distribuita della configurazione, cioè non è facile vedere come è messa insieme l'intera applicazione. È un po 'come l'AOP sotto questo aspetto.
Primavera - La primavera è solitamente la mia scelta predefinita. Detto questo, l'XML può diventare macchinoso e il conseguente rallentamento fastidioso. Spesso finisco per usare una combinazione di Dependency Injection e Spring artigianali. Quando hai effettivamente bisogno di una configurazione basata su XML, Spring XML è abbastanza buono. Spring si è impegnata molto anche per rendere altri framework più compatibili con l'inserimento delle dipendenze, il che può essere utile perché spesso utilizzano le migliori pratiche quando lo fanno (JMS, ORM, OXM, MVC ecc.).
Riferimenti