2009-09-23 9 views
14

Sto costruendo una nuova applicazione Web che utilizza Linux, Apache, Tomcat, Wicket, JPA/Hibernate e MySQL. Il mio bisogno primario è l'iniezione di dipendenza, che sia Spring che Guice possono fare bene. Penso di aver bisogno di supporto per le transazioni che verrebbe con Spring e JTA ma non ne sono sicuro.Devo usare Spring o Guice per un progetto Tomcat/Wicket/Hibernate?

Il sito avrà probabilmente circa 20 pagine e non mi aspetto un grande traffico.

Devo usare Spring o Guice?

Sentitevi liberi di porre e rispondere alle domande e farò del mio meglio per aggiornarlo.

risposta

15

Se ti piace la filosofia "fai-tutto-in-Java" seguita da Wicket, potresti preferire Guice per Spring. Non c'è una configurazione XML in Guice - è tutto fatto usando la classe Guice Module.

Per esempio, la classe Wicket WebApplication potrebbe essere simile a questo:

public class SampleApplication extends WebApplication 
{ 
    @Override 
    protected void init() 
    { 
     addComponentInstantiationListener(
      new GuiceComponentInjector(this, new GuiceModule())); 
    } 
} 

Il GuiceComponentInjector deriva dall'estensione wicket-Guice. Ecco il modulo:

public class GuiceModule extends AbstractModule 
{ 
    @Override 
    protected void configure() 
    { 
     // Business object bindings go here. 
     bind(Greetings.class).to(GreetingRepository.class); 
    } 
} 

In questo esempio, Greetings è un'interfaccia implementata da un calcestruzzo GreetingRepository di classe. Quando Guice deve iniettare un oggetto Greetings, soddisfa la dipendenza con uno GreetingRepository.

Ho creato un sample project che dimostra come creare un'applicazione Wicket/Guice per Google App Engine. Puoi tranquillamente ignorare le specifiche di App Engine e concentrarti su come funziona l'integrazione di Wicket-Guice.

+0

Puoi anche fare tutto java con Spring, anche ... – tetsuo

5

Spring probabilmente ti darebbe maggiore flessibilità, ma se hai solo bisogno di DI allora Guice potrebbe essere una scelta migliore.

È difficile rispondere in quanto Spring ha così tante caratteristiche che renderebbero il DAO più flessibile e funziona bene con Hibernate. Sarebbe utile se tu avessi più requisiti per quello che stai cercando.

Qui ci sono un paio di paragoni tra Spring e Guice e Spring, Guice e Picocontainer.

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

http://www.christianschenk.org/blog/comparison-between-guice-picocontainer-and-spring/

0

Non dimenticare CDI/JSR-299, parte di Java EE 6. È possibile utilizzare weld-wicket per integrare il wicket con CDI.

(a patto che si utilizzi l'implementazione della saldatura (come fanno GlassFish v3 e JBoss 6), ma il weld-wicket è piuttosto piccolo, quindi è possibile adattarlo se necessario).

Sono riuscito a ottenere Wicket 1.4 + weld-wicket + wicket-contrib-javaee + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3 in esecuzione insieme in una piccola dimostrazione di applicazione concettuale.Anche se è un po 'troppi framework, probabilmente lasceranno cadere la molla di sicurezza & come appaiono ridondanti.