代码之家  ›  专栏  ›  技术社区  ›  Trevor Allred

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

  •  14
  • Trevor Allred  · 技术社区  · 15 年前

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

    这个网站可能有20页左右的页面,我预计不会有巨大的流量。

    我应该用弹簧还是吉他?

    请随时提出和跟进问题,我会尽我所能更新这个。

    4 回复  |  直到 9 年前
        1
  •  15
  •   Steve    9 年前

    如果你喜欢WIKET遵循的“Java做的一切”的哲学,那么你可能更喜欢春天。guice中没有XML配置-所有配置都是使用guice完成的 Module 班级。

    例如,你的小门 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需要注入 问候语 对象,它将满足 问候式报告 .

    我把一个 sample project 这演示了如何为Google应用程序引擎构建wicket/guice应用程序。您可以安全地忽略应用程序引擎的细节,并关注Wicket-Guice集成的工作方式。

        2
  •  7
  •   Jesse Wilson    15 年前

    如果你最终和Guice一起去,一定要去看看 Warp Persist 对于Hibernate, Guice Servlet 对于Tomcat,以及 wicket-guice 为小门。

        3
  •  5
  •   James Black    15 年前

    春天可能会给你更多的灵活性,但如果你只是需要DI,那么Guice可能是一个更好的选择。

    很难回答这个问题,因为春天有很多特性可以使刀变得更灵活,并且可以很好地与冬眠一起工作。如果你对你要找的东西有更多的要求,这会有所帮助。

    下面是对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/

        4
  •  0
  •   Stefan L    15 年前

    不要忘记CDI/JSR-99,JavaEE 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) +SpringSecurity3+Spring3一起运行在一个小型的概念验证应用程序中。不过,太多的框架可能会使Spring安全性和Spring下降,因为它们看起来是多余的。