2010-05-05 4 views
5

Sto cercando un contenitore IoC semplice da utilizzare per le applicazioni GUI scritte in Java/Scala.Simple Inversion of Control framework per Java/Scala

Dovrebbe supportare la convenzione sulla configurazione, la gestione del ciclo di vita, la configurazione in codice (preferibilmente senza alcun XML necessario) e il controllo delle dipendenze al momento della compilazione il più possibile. Qualcosa di simile a Autofac sarebbe perfetto.

risposta

12

Sembra che tu abbia bisogno di qualcosa come Google Guice.

Sono stati utilizzati diversi contenitori IoC per Java (ad esempio PicoContainer), ma sono stati tutti all'ombra della primavera da anni. La primavera è probabilmente un po 'esagerata per le tue esigenze, però.

Guice ha ripreso una sana competizione.

+0

Questo è l'opzione che sto guardando attualmente, ma io Sto sperando di imparare delle alternative. –

+0

Sì, la primavera è decisamente troppo pesante. –

+0

Anche Spring 3.0 con solo core primaverile e usando annotation-config? – Nate

3

Google Guice è piuttosto buona:

http://code.google.com/p/google-guice/

Non hai alcun gunk XML sia, si può semplicemente creare modulo programatically e scrivere le cose insieme, in quanto, ad esempio, l'associazione di un interfaccia (TRANSACTIONLOG) per una classe di implementazione (DatabaseTransactionLog):

public class BillingModule extends AbstractModule { 
    @Override 
    protected void configure() { 
    bind(TransactionLog.class).to(DatabaseTransactionLog.class); 
    } 
} 
+0

+ 1 per Guice, ed ecco una lettura interessante sul porting da Plexus a Guice-2.0 http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/ – crowne

+1

Guice tira la molla a destra nelle palle – Jon

1

PicoContainer è un full-service altamente integrabile, Inversion of Control (IOC) contenitore per i componenti onorano il modello Dependency Injection. Il progetto è iniziato nel 2003 ed è stato pioniere del cablaggio automatico del Costruttore Injection. È anche Open Source e quindi gratuito da usare. La licenza è BSD e quindi puoi tranquillamente utilizzarla con software commerciale o di altro tipo open source.