我应该将Spring或Guice用于Tomcat / Wicket / Hibernate项目吗?

时间:2009-09-23 02:27:01

标签: spring jpa wicket guice

我正在构建一个使用Linux,Apache,Tomcat,Wicket,JPA / Hibernate和MySQL的新Web应用程序。我的主要需求是依赖注入,Spring和Guice都可以做得很好。我想我需要Spring和JTA提供的事务支持,但我不确定。

该网站可能有大约20页,我不希望有大量的流量。

我应该使用Spring还是Guice?

随意提出问题和跟进问题,我会尽力更新。

4 个答案:

答案 0 :(得分:15)

如果你喜欢Wicket遵循的“do-it-all-in-Java”理念,那么你可能更喜欢Guice而不是Spring。 Guice中没有XML配置 - 它都是使用Guice Module类完成的。

例如,您的Wicket WebApplication类可能如下所示:

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

GuiceComponentInjector来自wicket-guice扩展。这是模块:

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

在此示例中,Greetings是由具体的GreetingRepository类实现的接口。当Guice需要注入一个Greetings对象时,它将满足GreetingRepository的依赖关系。

我已经整理了sample project,演示了如何为Google App Engine构建Wicket / Guice应用程序。您可以安全地忽略App Engine的细节,并专注于Wicket-Guice集成的工作原理。

答案 1 :(得分:7)

如果您最终使用Guice,请务必查看Warp Persist表示Hibernate,Guice Servlet表示Tomcat,wicket-guice表示Wicket。

答案 2 :(得分:5)

Spring可能会给你更大的灵活性,但如果你只需要DI,那么Guice可能是更好的选择。

很难回答,因为Spring有很多功能可以使DAO更灵活,并且与Hibernate配合得很好。如果您对所寻找的内容有更多要求,那将会有所帮助。

以下是Spring和Guice以及Spring,Guice和Picocontainer之间的几个比较。

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

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

答案 3 :(得分:0)

不要忘记CDI / JSR-299,它是Java EE 6的一部分。您可以使用weld-wicket将wicket与CDI集成。

(只要您使用焊接实现(如GlassFish v3和JBoss 6那样),但是焊接门很小,所以如果需要,您可以调整它。)

我设法在一个小概念验证应用程序中运行Wicket 1.4 + weld-wicket + wicket-contrib-javaee + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3。虽然框架太多了,但可能会降低弹簧安全性和安全性。春天,因为它们似乎是多余的。