Hunter X Hunter- -| 回首页 | 2004年索引 | - -以讹传讹

体验Avalon- -

                                      

前两天有点想修改OpenIM的代码,于是有幸看到了在Avalon容器基础上实现的组件:为了获得容器的log支持,就得继承AbstractLogEnabled类;为了让容器配置它的初始环境,又得实现另外一个接口。总之,要使用一种infrastructure,组件就得具有一个类型。要使用别的组件吗?麻烦你到一个context对象里面去找——恩,一个标准的工厂模式。结果呢?结果就是我根本没办法把一个组件从容器中剥出来独立测试,要让组件正常运行就得把Merlin跑起来(而且好象对Merlin的版本都有要求)。单元测试都没法做,当然就更不用说修改了,于是,放弃。
 
结论是,Avalon是一个糟糕的容器。一个好的容器应该让里面的组件都是无约束的POJO,不受容器特定接口和infrastructure的限制,没有IoC、没有AOP的容器大致等于垃圾。像Avalon这样的容器,既然组件已经无法拆出来独立测试了,还要容器来干什么呢?旁边一位同事说得好:之所以Avalon看起来这么厉害,正好是因为它糟糕,所以让用它的人时时刻刻想到它,所以印象深刻。

- 作者: gigix 2004年10月13日, 星期三 21:40

Trackback

你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=359677

回复

- 评论人:inhub

Wed Dec 01 16:59:31 CST 2004  作者邮箱  作者Blog

感觉没错,Avalon终于走到了尽头

- 评论人:匿名

Mon Nov 15 17:31:47 CST 2004  作者Blog

一个好的容器应该让里面的组件都是无约束的POJO
--------------------------------------------------------------------
你当在写企业应用程序啊,Avalon的定位是服务器应用框架,面向的是服务器组件,不是应用级组件。

评论内容: