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

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的快速入门文档,用起来挺简单的。
分享到:
评论
11 楼 lordhong 2007-02-28  
靠,强烈关注中...
10 楼 acdc 2007-02-27  
Bob Lee是个牛人啊~~
JBoss的AOP最初代码还是他提供的.

2年前研究AOP的时候读过他的blog,还有他的dynaop代码也是精巧得很,里面很多工具类我一直在使用.

这家伙一直用Mac Book,

后来去了Google,貌似就没有消息了...

哦好象还只是20出头的毛头小伙....

一不小心8卦了...
9 楼 huangpengxiao 2007-02-27  
存在即合理,GOOGLE 为什么推出了 IOC 仅仅为了自己使用?
8 楼 ahuaxuan 2007-02-27  
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它,不过我不会这么做。

呵呵,这个写法的意义更多的是在创新,我不是说这个方法本身多了不起,我在说这个人,单例出来这么多年了,他还能再创新,难道不是很了不起吗
其次,如果我不是做web的呢,我是c/s,我的client是一个exe,用户操作完可能就关掉的,同时恰好这个类里还有一个static方法(呵呵,太巧了,或者这个exe配置了预先加载),这时候我想这个写法还是不错的, 但是主要的意义在于对单例写法的补充,也让我们可以看到单例还有这种写法
引用
不过就算是lazy loading有用,通常singleton里面只有getInstance(),也就是说即使把singleton作为类的静态实例缓存,也是在调用getInstance()时候才会加载,这不就是lazy loading想做的效果么。
不是吧,如果这个类被预先加载了,那如果是用类的静态实例缓存那这个对象肯定被初始话了,如果有lazy的话即使加载了Class,也不会实例化这个类的对象的
7 楼 魔力猫咪 2007-02-27  
我去看了一下,目前还处于RC状态。可以做做测试。不推荐在实际项目中使用。不过这个IOC是基于JavaSE5设计的。使用老版本的人就没辙了。还有,用Annotation来写的话,每次修改都需要重新编译,不如XML灵活。
6 楼 JAVA_ED 2007-02-27  
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才是正解
5 楼 intolong 2007-02-27  
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它,不过我不会这么做。
4 楼 ahuaxuan 2007-02-27  

public class Singleton {   
  
  static class SingletonHolder {   
    static Singleton instance = new Singleton();   
  }   
  
  public static Singleton getInstance() {   
    return SingletonHolder.instance;   
  }   
  
}  

不得不佩服Bob Lee了,咱怎么就没有想到呢,呵呵,看来Bob Lee对java真的是相当的精通了,到现在还能创新单例模式,牛
3 楼 fins 2007-02-27  
justcode 写道
无配置文件这点上,不知道是不是优点......


哈哈 我看到"实用JDK5.0的annotation描述组件依赖"时心里马上凉了半截
冒出的想法和justcode完全一样 呵呵
2 楼 Allen 2007-02-27  
这个Bob Lee可是相当不简单的说……

他写的一个Singleton模式的写法前不久还得到了OnJava编辑的推荐呢:
public class Singleton {

  static class SingletonHolder {
    static Singleton instance = new Singleton();
  }

  public static Singleton getInstance() {
    return SingletonHolder.instance;
  }

}


See in : http://crazybob.org/2007/01/lazy-loading-singletons.html
See also : http://www.oreillynet.com/onjava/blog/2007/01/singletons_and_lazy_loading.html
1 楼 justcode 2007-02-27  
无配置文件这点上,不知道是不是优点......

相关推荐

    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