`

Guice与Spring的对比

阅读更多

Guice与Spring的对比
  Spring Guice
使用XML 使用将类与类之间的关系隔离到xml中,由容器负责注入被调用的对象,因此叫做依赖注入 不使用xml,将类与类之间的关系隔离到Module中,声名何处需要注入,由容器根据Module里的描述,注入被调用的对象。
使用Annotation   使用
支持自定义Annotation标注,对于相同的接口定义的对象引用,为它们标注上不同的自定义Annotation注释,就可以达到同一个类里边的同一个接口的引用,注射给不同的实现,在Module里用标注做区分,灵活性大大增加。
使用Annotation也未必是好事,范型等新特性也未必是好事,目前大多的服务器均不支持jdk1.5,wls要9以前才支持,而目前的客户由于价格原因也很少选用wls9的,至少我们做过的项目中都没有。功能再强,客户不需要,何用?
运行效率 装载spring配置文件时,需解析xml,效率低,getBean效率也不高,不过使用环境不会涉及到getBean,只有生产环境的时候会用到getBean,在装载spring应用程序的时候,已经完成全部的注射,所以这个低效率的问题不是问题。 使用Annotation,cglib, 效率高与spring最明显的一个区别,spring是在装载spring配置文件的时候把该注入的地方都注入完,而Guice呢,则是在使用的时候去注射,运行效率和灵活性高。
类耦合度 耦合度低,强调类非侵入,以外部化的方式处理依赖关系,类里边是很干净的,在配置文件里做文章,对类的依赖性极低。 高,代码级的标注,DI标记@inject侵入代码中,耦合到了类层面上来,何止侵入,简直侵略,代码耦合了过多guice的东西,大大背离了依赖注入的初衷,对于代码的可维护性,可读性均不利
类编写时 需要编写xml,配置Bean,配置注入 只需声明为@inject,等着被注入,
最后在统一的Module里声明注入方式
仅支持IOC 否,spring目前已经涉猎很多部分 是,目前仅仅是个DI容器
是否易于代码重构 统一的xml配置入口,更改容易 配置工作是在Module里进行,和spring异曲同功
支持多种注入方式 构造器,setter方法 Field,构造器,setter方法
灵活性  

1,如果同一个接口定义的引用需要注入不同的实现,就要编写不同的Module,烦琐

2,动态注入

如果你想注射的一个实现,你还未知呢,怎么办呢,spring是没办法,事先在配置文件里写死的,而Guice就可以做到,就是说我想注射的这个对象我还不知道注射给谁呢,是在运行时才能得到的的这个接口的实现,所以这就大大提高了依赖注射的灵活性,动态注射。

与现有框架集成度 1, 高,众多现有优秀的框架(如struts1.x等)均提供了spring的集成入口,而且spring已经不仅仅是依赖注入,包括众多方面。
2, Spring也提供了对Hibernate等的集成,可大大简化开发难度。
3, 提供对于orm,rmi,webservice等等接口众多,体系庞大。
1,可以与现有框架集成,不过仅仅依靠一个效率稍高的DI,就想取代spring的地位,有点难度。
配置复杂度 在xml中定位类与类之间的关系,难度低 代码级定位类与类之间的关系,难度稍高

分享到:
评论

相关推荐

    DI容器框架Google Guice与Spring框架的区别

    这里提到了更多的DI容器,如Spring、PicoContainer和EJB容器,但主要关注的是Guice与Spring的对比。这暗示我们将深入比较Guice和Spring在实现DI时的具体特点,以及它们与其他DI容器相比的独特之处。 **详细知识点:...

    guice-spring-3.2.3.zip

    3. **Spring DI**:与Guice类似,但提供了更多如AOP、事务管理等功能,对比两者在DI上的异同。 4. **Guice模块(Module)**:定义和配置绑定规则,如何创建自定义模块以适应特定需求。 5. **Maven插件开发**:了解...

    初试Guice(转)

    此外,文章可能还会涵盖Guice与其他依赖注入框架(如Spring)的对比,以突出Guice的轻量化和灵活性。 总之,Guice是一个强大的工具,能帮助开发者构建松散耦合、易于测试和维护的Java应用。通过深入学习和实践,你...

    Google Guice: Agile Lightweight Dependency Injection Framework

    - **对比Guice与其他框架**:了解Guice与Spring等其他框架之间的异同。 - **未来展望**:探索Guice的发展方向以及如何将其标准化到未来的Java EE或SE规范中。 - **实战应用**:学习如何使用Guice构建真实的Web应用...

    14 离开了Spring,IoC容器还可以怎么做?慕课专栏1

    【标题】:理解IoC容器及其替代方案:Spring与Guice的对比 【描述】:在Java开发领域,Spring框架的影响力无处不在,它的IoC(控制反转)和AOP(面向切面编程)特性极大地简化了应用的构建。然而,Spring并非唯一的...

    JavaEye新闻月刊 - 2008年3月 总第1期.pdf

    这反映了Java开发者对于框架选择的关注,可能涉及到Struts、Hibernate、Spring等主流框架的对比和应用。 2. **面向语言的编程**:文章讨论了面向语言的编程(Language-Oriented Programming, LOP)这一新兴编程范式...

    javaeye月刊2008年3月 总第1期.pdf

    3. **Eclipse vs NetBeans**:对比了Eclipse 3.3与NetBeans 6.0,指出两者在Java开发环境中的优势和不足,为开发者选择IDE提供了参考。 4. **IntelliJ IDEA 8**:介绍了IntelliJ IDEA的新版本特性,可能是关于性能...

    Java测试新技术TestNG和高级概念.part1

    4.1 容器内测试与容器外测试的对比 4.2 容器内测试 4.3 Java命名和目录接口(JNDI) 4.4 Java数据库连接(JDBC) 4.5 Java事务API(JTA) 4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans...

    Java测试新技术TestNG和高级概念.part2

    4.1 容器内测试与容器外测试的对比 4.2 容器内测试 4.3 Java命名和目录接口(JNDI) 4.4 Java数据库连接(JDBC) 4.5 Java事务API(JTA) 4.6 Java消息服务(JMS) 4.7 Java持久API(JPA) 4.8 Enterprise JavaBeans...

    DI 详细介绍的书籍

    3. **DI框架**:讨论各种流行的DI框架,如Spring、Guice、 Autofac等,如何使用它们来实现DI,并对比分析各自的优缺点。 4. **最佳实践**:提供DI在实际项目中的应用指南,如何设计良好的接口,如何避免过度设计,...

    fizzbuzz-cowboy

    在Java中,依赖注入可以通过手动装配、注解驱动装配或者使用第三方库如Google Guice、Spring框架等实现。项目中可能包含了不同实现方式的代码示例,以便对比和分析各种方法的优缺点。 虽然“牛仔模式”在本项目中被...

    Manning Dependency Injection.pdf

    DI框架如Spring(Java)、 Autofac(.NET)和Guice(Java)等,为开发者提供了实现依赖注入的便捷方式。这些框架可以自动管理对象的生命周期,提供依赖解析,使得代码更加简洁和模块化。 书中可能涵盖了以下关键...

    IOCPerformanceTest

    在Java世界中,Spring是最著名的IOC框架之一,但还有其他如Google的Guice和Apache的PicoContainer等。 描述中提到的“性能比较”可能涉及到不同IOC框架在处理对象创建、依赖解析以及应用启动速度等方面的性能指标。...

Global site tag (gtag.js) - Google Analytics