精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-28
类似的形式在commons中出现: source: package org.apache.commons.lang; public class ObjectUtils { public static final Null NULL = new Null(); public static class Null implements Serializable { private static final long serialVersionUID = 7092611880189329093L; Null() { super(); } /** * <p>Ensure singleton.</p> * * @return the singleton value */ private Object readResolve() { return ObjectUtils.NULL; } } }[size=9][/size] |
|
返回顶楼 | |
发表时间:2007-02-28
真的好用的东西就应该赶快拿来实践一下。建议牛人实践一下介绍经验。
|
|
返回顶楼 | |
发表时间:2007-02-28
quaff 写道 ahuaxuan 写道 如果光讲这个“快”的话不能看比例吧,1毫秒和100毫秒对用户来说没有什么区别,用spring到现在从来没有它有多慢,现在搞的分布式系统里,感觉remote session bean才叫个真慢,呵呵
spring慢也是在容器启动的时候慢,做的事情多自然就慢了,guice只是一个IoC容器而已,IoC只是spring的一部分 你以为guice在启动的时候不慢吗,它也要load整个对象图,你看看lz的连接就知道guice有没有aop了,并且如果把spring中配置的bean设置位lazy-init,那spring的启动也是非常快的。虽然spring不只ioc,但是你也可以只用ioc啊,所以spring在启动的时候并不会比guice多做多少事 |
|
返回顶楼 | |
发表时间:2007-02-28
如果没有了配置文件了 那IOC的注入还是以来JAVA代码中的标记来实现,与代码过于耦合了吧
|
|
返回顶楼 | |
发表时间:2007-02-28
ajoo 写道 robbin 写道 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的快速入门文档,用起来挺简单的。 spring确实是超级慢啊。 这个guice看起来不那么embeddable,不知道谁用过ejb3的dependency injection的?给比较一下? 我比较喜欢的功能: 1。快 2。静态检查。没用过,不知道能达到什么程度。 3。没有特殊的setter injection,这样显得更优雅。 有点犹豫的: 1。说是ultra-lightweight。可能是指代码量说的。从侵入性来讲,要求组件import Guice的Annotation,这不太lightweight——当然,从实用角度来讲也不一定就是大不了的问题。 ajoo咋没比较一下yan和guice咧,早晨看到这个帖子就等着ajoo来拍转呢:) |
|
返回顶楼 | |
发表时间:2007-03-01
spring可不仅仅是启动慢这么简单.getBean()就很慢的。以前做过一个benchmark(http://docs.codehaus.org/display/YAN/Performance+Test+(Nuts+vs+Spring)),spring的prototype bean最坏情况比yan慢29倍。而yan并不是从效率角度着眼设计的。大量的indirection,抽象在yan中存在,这些都可能影响效率。
这也就是说,想做一个ioc容器比spring还慢的,也不是那么容易的。 所以说,Guice比spring快100倍我并不惊讶。(猜想可能Guice用了特殊的reflection,比如cglib的reflection增强?看bob lee的blog确实有使用cglib reflection可以提高reflection效率的文章) 当然,挺spring最有力的说法就是,getBean()的效率并不重要。因为理想情况是整个app在启动时由spring把所有依赖都注射完毕,然后就没spring的事了。getBean()仅仅调用一次就够了。 如果这样的话,快一百万倍都没有意义了。 关于yan和guice的比较。首先我不是很熟悉guice,不好比。 但是粗略看上去,guice是从可用性和效率着眼的,而yan着眼于灵活性和embeddability。一个容器直接用也许就需要那么寥寥几个功能,但是要是嵌入到别的应用里面,根据要嵌入的应用的不同需求,可能要非常变态的灵活性才能满足。 yan也许更应该和pico放在一起比。而guice和spring才是更竞争的关系。 无论如何,欢迎任何对spring容器的竞争,因为spring的容器代码和设计确实不太漂亮。 |
|
返回顶楼 | |
发表时间:2007-03-01
justcode 写道 无配置文件这点上,不知道是不是优点......
XML解析总比反射耗时,而且不支持重构。 |
|
返回顶楼 | |
发表时间:2007-03-01
快100倍,好像夸张了点,spring慢主要是读取配置,动态注入慢了.核心部分并不慢,spring能够动态注册单列bean.
要是guice也动态注册单列bean,和spring来测试, 谁快谁慢还不一定. |
|
返回顶楼 | |
发表时间:2007-03-01
100 倍是不是 用了 中国的 夸张 的修饰词啊 !
|
|
返回顶楼 | |
发表时间:2007-03-01
下载了一个guice用了一下,guice真难用,但guice是要快一点
大概测试一下,快不会超过10倍.大概在4-5倍. |
|
返回顶楼 | |