论坛首页 Java企业应用论坛

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

浏览 53216 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-27  
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的快速入门文档,用起来挺简单的。
   发表时间:2007-02-27  
无配置文件这点上,不知道是不是优点......
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2007-02-27  
justcode 写道
无配置文件这点上,不知道是不是优点......


哈哈 我看到"实用JDK5.0的annotation描述组件依赖"时心里马上凉了半截
冒出的想法和justcode完全一样 呵呵
0 请登录后投票
   发表时间: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真的是相当的精通了,到现在还能创新单例模式,牛
0 请登录后投票
   发表时间: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它,不过我不会这么做。
0 请登录后投票
   发表时间: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才是正解
0 请登录后投票
   发表时间:2007-02-27  
我去看了一下,目前还处于RC状态。可以做做测试。不推荐在实际项目中使用。不过这个IOC是基于JavaSE5设计的。使用老版本的人就没辙了。还有,用Annotation来写的话,每次修改都需要重新编译,不如XML灵活。
0 请登录后投票
   发表时间: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,也不会实例化这个类的对象的
0 请登录后投票
   发表时间:2007-02-27  
存在即合理,GOOGLE 为什么推出了 IOC 仅仅为了自己使用?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics