2009-09-23 21 views
14

Estoy construyendo una nueva aplicación web que utiliza Linux, Apache, Tomcat, Wicket, JPA/Hibernate y MySQL. Mi principal necesidad es Dependency Injection, que tanto Spring como Guice pueden hacer bien. Creo que necesito soporte de transacciones que vendría con Spring y JTA, pero no estoy seguro.¿Debo usar Spring o Guice para un proyecto Tomcat/Wicket/Hibernate?

El sitio probablemente tendrá alrededor de 20 páginas y no espero un gran tráfico.

¿Debo usar Spring o Guice?

Siéntase libre de hacer preguntas y seguir y haré todo lo posible para actualizar esto.

Respuesta

15

Si te gusta la filosofía "hazlo todo en Java" que sigue Wicket, entonces tal vez prefieras Guice durante la primavera. No hay configuración XML en Guice, todo se hace usando la clase Guice Module.

Por ejemplo, la clase de Wicket WebApplication podría ser algo como esto:

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

El GuiceComponentInjector proviene de la extensión portillo-guice. Aquí está el Módulo:

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

En este ejemplo, Greetings es una interfaz implementada por una clase concreta GreetingRepository. Cuando Guice necesite inyectar un objeto Greetings, satisfará la dependencia con un GreetingRepository.

He creado un sample project que muestra cómo crear una aplicación Wicket/Guice para Google App Engine. Puede ignorar de forma segura los detalles de App Engine y centrarse en cómo funciona la integración de Wicket-Guice.

+0

Puedes ir a toda java con Spring, también ... – tetsuo

5

La primavera probablemente le daría más flexibilidad, pero si solo necesita DI, Guice puede ser una mejor opción.

Es difícil de responder ya que Spring tiene tantas características que harían que el DAO sea más flexible y funcione mejor con Hibernate. Ayudaría si tuviera más requisitos para lo que está buscando.

Aquí hay un par de comparaciones entre Spring y Guice y Spring, Guice y Picocontainer.

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

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

0

No se olvide de CDI/JSR-299, parte de Java EE 6. Puede usar weld-wicket para integrar wicket con CDI.

(siempre que utilice la implementación de soldadura (como GlassFish v3 y JBoss 6 do), pero el wicket de soldadura es bastante pequeño, por lo que probablemente pueda adaptarlo si es necesario).

Logré obtener Wicket 1.4 + widge-contrib-javaee + WBB + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3 corriendo juntos en una pequeña prueba de concepto de aplicación.Sin embargo, eso es demasiados frameworks, probablemente caiga el resorte de seguridad & ya que parecen redundantes.