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中定位类与类之间的关系,难度低 |
代码级定位类与类之间的关系,难度稍高
|
分享到:
相关推荐
Guice与Spring框架的区别.pdf
DI容器,例如spring,picoContainer,EJB容器等等 与Guice的不同
guice-spring-1.0.jar
uptodate-maven-plugin.zip,强制使用最新的依赖项/父项
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...
Google Guice 这个高效的与Spring类似的依赖注入框架; MyBatis配置和使用; Google Guice与MyBatis集成,支持注解事务,简单的无法想象; Mybatis与mysql集成;实现发送邮件轮询; 源码是个web项目,里面有数据库的...
demo 很好的例子 博文链接:https://phantom.iteye.com/blog/92183
guice-3.0,轻量级IOC容器,包含guice-3.0.jar、guice-spring-3.0.jar、guice-struts2-plugin-3.0.jar
guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar guice.jar
Unlike other popular DI frameworks such as Spring, Guice fully embraces modern Java language features and combines simplicity with stunning performance and developer-friendliness. Google Guice: ...
在 Play 2.4 中使用 Spring ApplicationContext 作为 Guice 模块。 我帮助做到这一点。
google-guice用户手册,据说和spring pk
guice 所有的jar 包。Spring太过庞大,IOC方面来说,guice做得的确比较出色。
spring cloud开发框架详解,讲述如何使用spring cloud框架
guice 学习资料,快速掌握guice的编程技巧以及了解其机制。
Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC)。Guice非常小而且快。Guice是类型安全的,它能够对构造函数,属性,方法(包含任意个参数的任意方法,而不仅仅是setter...
guice-3.0.jar ,Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;