Spring和Guice在一起,或者只是Spring

我从头开始创建一个新的Java Web应用程序。

我对Spring Framework没有太多经验,但我知道我想使用它的一些function,比如Transaccions Management。

另一方面,我非常喜欢Guice的dependency injection。

我知道Guice和Spring可以一起工作: http : //www.jroller.com/mindcrime/entry/an_example_of_integrating_guice

但在开始设计我的应用程序之前,我想知道是否有人通过遵循该方法遇到了问题。

另外,我真正喜欢Guice的是你不需要XML配置文件,只需要java模块,它更短,更容易阅读。 Spring上有没有XML配置文件的替代品,类似于Guice?

我认为Spring本身就足以满足企业应用需求。

Spring dosent也需要XML! Modern Spring Apps使用JavaConfig和最小配置。 看一下Spring Boot Guides 。 Whole Spring应用程序根本不能使用任何XML。

Guice很好,但非常有限。 使用Spring可以非常简单快速地编写具有事务和持久性的Web应用程序或REST应用程序。 使用Guice,这更复杂。

如果您刚刚开始,我会建议您使用https://github.com/spring-projects/spring-boot

它具有出色的自动配置function,可以节省编写样板代码。 由于嵌入式Tomcat,我甚至可以释放您使用应用程序服务器。 例如,实现简单的MVC控制器(可以用作REST端点)看起来像这样:

@Controller @EnableAutoConfiguration public class SampleController { @RequestMapping("/") @ResponseBody String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } } 

现在你可以执行java -jar your_package.jar等等。 您还将获得事务管理,数据库集成等。可以在上述链接中找到更多示例,尤其是在https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples目录中

Spring现在已经为两个主要版本提供了基于Java的注释配置。 您不需要编写单行XML(甚至不是web.xml!)

我和Guice和Spring一起工作过。 Guice足以满足需要DI的小型项目,但如果您将使用Spring进行MVC或事务性支持,您也可以使用它的DI。 Guice也没有像Spring那样有良好的配置文件支持 – 如果你想为本地开发,测试环境和生产提供单独的bean,你必须自己手动切换模块。

我还建议你看看HK2的轻量级J2SE DI发动机。 它类似于Guice和CDI,并且具有许多可扩展性function,您可能会感兴趣。 它还可以通过双向桥与Guice和Spring配合使用。 你可以在这里开始学习HK2: http : //hk2.java.net/ 。 有关Guice桥的信息,请访问: https : //hk2.java.net/2.2.0-b27/guice-bridge.html 。 有关Spring桥的信息,请访问: https : //hk2.java.net/2.2.0-b27/spring-bridge.html 。

DI提供商使用的决定很大程度上取决于您的应用程序所需的特殊function。