我正在构建一个使用Linux,Apache,Tomcat,Wicket,JPA / Hibernate和MySQL的新Web应用程序。我的主要需求是依赖注入,Spring和Guice都可以做得很好。我想我需要Spring和JTA提供的事务支持,但我不确定。
该网站可能有大约20页,我不希望有大量的流量。
我应该使用Spring还是Guice?
随意提出问题和跟进问题,我会尽力更新。
答案 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。虽然框架太多了,但可能会降低弹簧安全性和安全性。春天,因为它们似乎是多余的。