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

该网站可能有大约 20 个页面,我预计流量不会很大。

我应该使用 Spring 还是 Guice?

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

有帮助吗?

解决方案

如果您喜欢 Wicket 遵循的“用 Java 实现一切”的理念,那么您可能更喜欢 Guice 而不是 Spring。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 需要注射时 Greetings 对象,它将满足与 a 的依赖关系 GreetingRepository.

我整理了一个 示例项目 演示了如何为 Google App Engine 构建 Wicket/Guice 应用程序。您可以安全地忽略 App Engine 细节,而专注于 Wicket-Guice 集成的工作原理。

其他提示

如果你最终选择了 Guice,一定要看看 扭曲持续 对于休眠, 吉斯小服务程序 对于 Tomcat,以及 威克特吉斯 对于检票口。

弹簧可能会给你更多的灵活性,但如果你只需要DI则吉斯可能是一个更好的选择。

这是很难回答,因为春天有这么多的功能,将使DAO更加灵活,并与Hibernate的效果很好。如果你在找什么有更多的要求,这将有助于。

这里有几个Spring和吉斯和Spring,吉斯和PicoContainer的之间的比较。

http://code.google.com/p/google-guice /维基/ SpringComparison

http://www.christianschenk.org/博客/比较-之间-吉斯-PicoContainer的-和弹簧/

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

(只要您使用焊接实现(如 GlassFish v3 和 JBoss 6 所做的那样),但焊接检门相当小,因此您可以根据需要进行调整)。

我设法获得了 Wicket 1.4 +weld-wicket+wicket-contrib-javaee+EJB 3.1+JPA 2.0+ 检票口安全 (SWARM) + Spring Security 3 + Spring 3 在一个小型概念验证应用程序中一起运行。不过,这个框架有点太多了,可能会放弃 spring-security 和 spring,因为它们看起来是多余的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top