我正在构建一个新的web应用程序,使用Linux、Apache、Tomcat、Wicket、JPA/Hibernate和MySQL。我的主要需求是依赖注入,Spring和Guice都可以很好地完成。我认为我需要事务支持,这将伴随着Spring和JTA,但我不确定。
该网站可能会有大约20个页面,我不希望有巨大的流量。
我应该使用Spring还是Guice?
欢迎提出问题并跟进,我会尽力更新此内容。
Module
类完成。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
来满足依赖关系。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/
不要忘记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,因为它们似乎是多余的。