`
robbin
  • 浏览: 4821437 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137063
社区版块
存档分类
最新评论

Google Guice - 比Spring快100倍的IoC容器

    博客分类:
  • Java
阅读更多
http://code.google.com/p/google-guice/

Google公司的Bob lee开发的轻量级IoC容器,其特点是:

1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少

http://code.google.com/p/google-guice/wiki/SpringComparison

这是Google guice和spring IoC容器的对比

另外xwork2.0已经集成了Google guice容器了。

http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8

这是Google guice的快速入门文档,用起来挺简单的。
分享到:
评论
51 楼 cosmo1987 2012-02-29  
shaucle 写道
acdc 写道
ajoo 写道

无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。

同感,
但是要补充的一点是,哪怕出现了比Spring更好的框架, 目前一时半刻也很难撼动Spring的地位...更多的人考虑的该框架是否有足够的官方/非官方的技术支持,是否可以轻易的从市场招聘到懂该框架的开发人员.


spring代码的确一般,但设计还是不错的,hibernate,seam也是
牛人们似乎都喜欢设计很多类,但里面的代码风格和质量却不怎么关注(很多地方完全可重构),
看不惯seam把那个大括号写在第二行...

貌似这种写法来自于C或者C++
50 楼 Hejrcc 2007-05-17  
用 Annotation, 如果配置文件改变了, 需要重新编译原代码.
还是用 xml 配置要来得方便.
49 楼 ecsoftcn 2007-05-02  
xingxing444 写道
请问,如果如果一个已有的类,比如我要使用其他Jar包里的类,里面没有guice的annotation那不就无法直接使用注入来使用这个类了?


可以,你只需要通过Guice的Provider机制就可以很容易的实现这个需求。可以参考Guice 中对HttpServletRequest的处理。
48 楼 javadev 2007-05-02  
现在好多应用服务器都是使用jdk1.5一下的版本,不支持annotation,guice只能作为研究对象,但不多很快普及使用的。
47 楼 xingxing444 2007-05-02  
请问,如果如果一个已有的类,比如我要使用其他Jar包里的类,里面没有guice的annotation那不就无法直接使用注入来使用这个类了?
46 楼 jetever 2007-04-19  
没有配置文件,前途是光明的。
45 楼 demon3780 2007-04-18  

  static class SingletonHolder {  
    static Singleton instance = new Singleton();  
  }  
 
把SingletonHolder定义成private会不会更好些
44 楼 rainlife 2007-04-04  
ajoo 写道


有点犹豫的:
1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。


侵入是必然的,但如果性能上面真的有100倍的话,那前途非常光明的。
43 楼 wldandan 2007-03-23  
无配置文件是比较好,J2EE中的配置文件太多了
不过读代码的时候,可能就费点劲了
42 楼 bouzouki 2007-03-23  
JAVA_ED 写道
intolong 写道
ahuaxuan 写道

不得不佩服Bob Lee了,咱怎么就没有想到呢,呵呵,看来Bob Lee对java真的是相当的精通了,到现在还能创新单例模式,牛


牛是牛,不过感觉singleton的lazy loading用处不大。

通常lazy loading用在比较消耗资源的时候。生产环境下一般在容器启动时候就load了,越早发现问题越好,测试环境下可能有些作用。

不过就算是lazy loading有用,通常singleton里面只有getInstance(),也就是说即使把singleton作为类的静态实例缓存,也是在调用getInstance()时候才会加载,这不就是lazy loading想做的效果么。

除非你非要load singleton class,比如在singleton class里面写些别的静态方法或者使用反射load它,不过我不会这么做。


这种singleton lazy loading不是主要benefit  concurrent才是正解


确切的说是以前的lazy loading方法在并发下要么不正确,要么效率低,这种Holder方法提供了一个既正确又比较高效的机制
41 楼 xtwxgh 2007-03-22  
引用

huangyou 写道
无配置文件这点就很好
40 楼 xtwxgh 2007-03-22  
huangyou 写道
无配置文件这点就很好
39 楼 Godlikeme 2007-03-18  
huangyou 写道
无配置文件这点就很好


把依赖关系从代码中抽出来是为了保持代码的纯净,消除容器api侵入。
依赖关系由ioc框架维护。
配置文件拿掉后,很容易用一个另外的ioc框架替换,
annotation在代码里面就是另外一回事了。
38 楼 Godlikeme 2007-03-18  
shaucle 写道
acdc 写道
ajoo 写道

无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。

同感,
但是要补充的一点是,哪怕出现了比Spring更好的框架, 目前一时半刻也很难撼动Spring的地位...更多的人考虑的该框架是否有足够的官方/非官方的技术支持,是否可以轻易的从市场招聘到懂该框架的开发人员.


spring代码的确一般,但设计还是不错的,hibernate,seam也是
牛人们似乎都喜欢设计很多类,但里面的代码风格和质量却不怎么关注(很多地方完全可重构),
看不惯seam把那个大括号写在第二行...


应该是重设计,轻风格,欣赏简洁易懂的代码。
37 楼 huangyou 2007-03-18  
无配置文件这点就很好
36 楼 gof95 2007-03-13  
annotation比硬编码好在哪里?
35 楼 hiver 2007-03-13  
http://www.artima.com/forums/flat.jsp?forum=270&thread=198371

Google announced the open-source release of Guice, its internal Java dependency injection framework Guice.

Guice wholly embraces annotations and generics, thereby enabling developers to wire together and test objects with less effort than ever before. Annotations finally free you from error-prone, refactoring-adverse string identifiers.

Guice injects constructors, fields and methods (any methods with any number of arguments, not just setters). Guice includes advanced features such as custom scopes, circular dependencies, static member injection, Spring integration, and AOP Alliance method interception, most of which you can ignore until you need it.

An earlier version of Guice already powers Struts 2's plugin architecture. Google has been running Guice in mission critical applications for months, and now you can, too.

Guice lives at Google Code. From there, you'll find the user's guide, Javadocs, and download. Please direct any questions to the mailing list.
34 楼 shaucle 2007-03-05  
acdc 写道
ajoo 写道

无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。

同感,
但是要补充的一点是,哪怕出现了比Spring更好的框架, 目前一时半刻也很难撼动Spring的地位...更多的人考虑的该框架是否有足够的官方/非官方的技术支持,是否可以轻易的从市场招聘到懂该框架的开发人员.


spring代码的确一般,但设计还是不错的,hibernate,seam也是
牛人们似乎都喜欢设计很多类,但里面的代码风格和质量却不怎么关注(很多地方完全可重构),
看不惯seam把那个大括号写在第二行...
33 楼 nicemike 2007-03-02  
看不出来这样写的好处,哪位老大来指点一下
32 楼 Godlikeme 2007-03-01  
annotation又被乱用了。

相关推荐

    guice-3.0.rar

    - **轻量级**:相比Spring等其他IoC容器,Guice更小巧,引入的依赖少,启动速度快。 - **简洁的API**:Guice的API设计简单易用,减少了代码量,降低了学习曲线。 - **强大的注解支持**:Guice对Java标准注解和...

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

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

    Java轻量级IOC框架Guice

     速度快,号称比spring快100倍。  无外部配置(如需要使用外部可以可以选用Guice的扩展包),完全基于annotation特性,支持重构,代码静态检查。  简单,快速,基本没有学习成本。  Guice和spring各有所长,...

    Spring_3.x企业应用开发实战 目录

    - **Google Guice**:Google 提供的一个轻量级 DI 框架。 - **Jdon Framework**:提供了一系列企业级应用开发工具。 - **1.12 小结** - **总结**:介绍了 Spring 框架的基本概念、新功能以及生态系统。 #### 第...

    Google Guice入世(转 附带一Guice1.0的简单测试代码)

    它与Google App Engine等Google产品集成良好,也是Spring等其他IoC框架的一个轻量级替代方案。 总的来说,Google Guice是一个强大的工具,它通过依赖注入帮助开发者构建更加灵活、易于测试和维护的Java应用程序。...

    spring3.1 jar全集

    另外,Spring 3.1对JSR-330依赖注入规范的全面支持,使得与Google Guice等其他依赖注入框架的互操作性得到增强。 总的来说,这个"spring3.1 jar全集"包含的是一套完整的Spring开发工具,涵盖了从核心功能到高级特性...

    spring-framework-4.3.9.RELEASE-dist.zip

    Spring 4.x版本开始全面支持JSR-330(Dependency Injection for Java)标准,如@Inject和@Provider等注解,这使得Spring与其他遵循该标准的框架(如Google Guice)更易于互操作。 七、Spring Boot 虽然不直接包含...

    Struts 2 整合Spring

    虽然Struts 2 本身具备一定的依赖注入能力,但在实际项目中,为了更好地管理组件之间的依赖关系,通常会选择与Spring这样的外部IoC容器进行整合。 #### 三、Struts 2 和 Spring3 的整合步骤 1. **环境准备**: - ...

    spring 4.0 jar包.zip

    同时,增强了对JSR-330标准注解(如`@Inject`和`@Provider`)的支持,与Google Guice等其他依赖注入框架更好地集成。 - Bean后处理器(BeanPostProcessor)和初始化回调(InitializingBean)接口的改进,使开发者能...

    spring 5.0.x源码.zip

    总之,Spring 5.0.x源码对于Java开发者来说是一份宝贵的参考资料,它涵盖了IoC容器、AOP、MVC、数据访问、事务管理等多个方面的实现,有助于开发者深入理解Spring的工作原理,从而更好地运用和定制这个强大的框架。...

    tapioca:Tapioca 旨在在标准 Java 类库的现有部分(尽管有些模糊)之上提供一个极薄的层,以提供 IoC 容器

    什么是木薯粉? Tapioca 旨在在标准 Java 类库的现有部分... 如果您需要高质量和全功能的 IoC/DI 容器,请务必使用 Spring 或 Google 的 Guice 进行调查。 如果您需要一个具有零外部依赖关系的极其轻量级的容器,Ta

    Dependency Injection In Action

    通过本书的学习,读者不仅能够深入理解依赖注入的基本原理和技术细节,还能掌握如何有效地利用Spring、Google Guice等流行框架来优化应用设计。本书特别强调了实践中可能会遇到的问题、陷阱及最佳实践,旨在帮助...

    《Dependency Injection》电子书

    - **控制反转**(Inversion of Control,IoC):依赖注入是IoC的一种实现方式,它改变了对象创建的方式,使对象的创建过程由外部容器控制。 - **依赖注入容器**:依赖注入容器是管理对象生命周期和依赖关系的核心...

    Struts2+Spring2.5+Hibernate3(JPA)+ExtJS3基本后台

    Spring2.5版本引入了更多改进,如XML配置的简化、对JSR-303(Bean Validation)的支持和对Google Guice的兼容。 3. **Hibernate3**:Hibernate是一个对象关系映射(ORM)框架,用于简化Java应用与数据库之间的交互...

    最新版ssh所需的整合jar包

    - **Commons和IoC库**:Apache Commons库提供了各种实用工具,IoC(Inversion of Control)库如Google Guice或Spring本身用于依赖注入。 在没有使用Maven或Gradle等构建工具的情况下,手动收集这些jar包并管理它们...

    IOCPerformanceTest

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

    aop相关开发包

    它支持方法前、后、异常、最终以及环绕通知,并且可以与Spring IoC容器无缝集成,方便地管理切面和被通知对象。 在实际开发中,AOP的应用场景包括但不限于: - 日志记录:记录方法的调用时间、参数和返回值,便于...

    Dependency Injection

    依赖注入是现代软件架构中不可或缺的一部分,尤其在Java领域,它是Spring框架和Google Guice等流行框架的关键特性。 #### 二、依赖注入的实现方式 依赖注入通常可以通过以下三种方式进行: 1. **构造器注入**:这...

    Lamino-开源

    "Java"表明Lamino 也支持Java生态系统,这可能意味着它兼容Spring框架或者其他Java DI库,如Guice或Google Dagger。在Java世界里,依赖注入是实现松散耦合的关键工具。Lamino 可能提供了一种类似于.NET实现的方式,...

    Java Netty 分布式开发 框架

    相比MINA,Netty主要优势在于对Google Protocol Buffers的支持,对IOC容器(如Spring, Guice)的完整支持,以及更加简单易用的API设计。Netty提供了一种统一的网络API,无论是TCP还是UDP,都能提供高性能的网络通信...

Global site tag (gtag.js) - Google Analytics