我应该在一个Tomcat/Wicket/Hibernate项目中使用Spring还是Guice?

14

我正在构建一个新的web应用程序,使用Linux、Apache、Tomcat、Wicket、JPA/Hibernate和MySQL。我的主要需求是依赖注入,Spring和Guice都可以很好地完成。我认为我需要事务支持,这将伴随着Spring和JTA,但我不确定。

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

我应该使用Spring还是Guice?

欢迎提出问题并跟进,我会尽力更新此内容。

4个回答

15
如果您喜欢Wicket所遵循的“全部使用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扩展。下面是Module:

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来满足依赖关系。
我创建了一个示例项目,演示了如何在Google App Engine上构建Wicket/Guice应用程序。你可以放心地忽略App Engine的具体细节,专注于Wicket-Guice集成的工作原理。

7

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/


0

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

只要您使用weld实现(如GlassFish v3和JBoss 6所做的那样),但weld-wicket相当小,因此如果需要,您可能可以进行适应)。

我成功地将Wicket 1.4 + weld-wicket + wicket-contrib-javaee + EJB 3.1 + JPA 2.0 + wicket-security (SWARM) + Spring Security 3 + Spring 3在一个小型概念验证应用程序中运行在一起。虽然这是有点太多的框架了,但可能会放弃spring-security和spring,因为它们似乎是多余的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接