Dovrei usare primavera o Guice per un progetto Tomcat / Wicket / Hibernate?
Domanda
Sto costruendo una nuova applicazione web che utilizza Linux, Apache, Tomcat, Wicket, JPA / Hibernate e MySQL. Il mio bisogno primario è Dependency Injection, che sia primavera e Guice possono fare bene. Penso di aver bisogno di supporto delle transazioni che sarebbe venuto con la Primavera e JTA, ma non sono sicuro.
Il sito avrà probabilmente circa 20 pagine e non mi aspettare traffico enorme.
Dovrei usare primavera o Guice?
Sentitevi liberi di chiedere e followup domande e io farò del mio meglio per aggiornare questo.
Soluzione
Se ti piace la filosofia del "do-it-all-in-Java" che Wicket consegue, quindi si potrebbe preferire Guice oltre lo Spring. Non v'è alcuna configurazione XML in Guice - è tutto fatto con il Guice class Module
.
Per esempio, la classe WebApplication
Wicket 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 una classe GreetingRepository
concreta. Quando Guice deve iniettare un oggetto Greetings
, soddisferà la dipendenza con un GreetingRepository
.
ho messo insieme un progetto di esempio che illustra come costruire un Wicket / applicazione Guice per Google App Engine. È possibile ignorare le specifiche App Engine e concentrarsi su come funziona l'integrazione Wicket-Guice.
Altri suggerimenti
Se si finisce per andare con Guice, sicuramente check out ordito Persistere Hibernate, Guice Servlet per Tomcat, e wicket-Guice per wicket.
Primavera probabilmente vi darà più flessibilità, ma se avete solo bisogno DI allora Guice può essere una scelta migliore.
E 'difficile rispondere come Primavera ha tante caratteristiche che renderebbero il DAO più flessibile, e funziona bene con Hibernate. Sarebbe utile se si ha più i requisiti per quello che stai cercando.
Ecco un paio di confronti tra la primavera e Guice e la primavera, Guice e Picocontainer.
http://code.google.com/p/google-guice / wiki / SpringComparison
http://www.christianschenk.org/ blog / confronto-tra-Guice-picocontainer-e-molla /
Non dimenticate CDI / JSR-299, parte di Java EE 6. È possibile utilizzare saldare wicket integrare wicket con CDI.
(fino a quando si sta utilizzando l'implementazione di saldatura (come GlassFish v3 e JBoss 6 fare), ma la saldatura wicket è piuttosto piccola quindi si potrebbe probabilmente adattarlo, se necessario).
Sono riuscito a ottenere Wicket 1.4 + saldare wicket + wicket-contrib-JavaEE + EJB 3.1 + 2.0 + APP wicket-sicurezza (SWARM) + molla di sicurezza 3 + Spring 3 in esecuzione insieme in una piccola prova di applicazione concept. Questo è un po troppi quadri, però, probabilmente cadere primavera-sicurezza e la primavera come appaiono ridondanti.