cooma(microcontainer, SPI Provider Container) 0.1.0 released

Posted on February 9, 2013

Cooma是一个简单的Java微容器(microcontainer)实现,加载扩展点(Extension);是把Dubbo中使用的微容器独立拿出来了。
实现原型来自于Service implementation of JDK5

0.1.0主要是清理代码,之前的有些混乱的调用次序、关系,剥去了和Dubbo相关的概念。Cooma精简(代码行1000-),功能实用,如果想要一个简单的扩展点/插件容器,可以参考一下。

这几天把之前想到内容记成了Ticket改好了。
PS: GitHub的Issue非常得简约实用!

Cooma实现原型来自于Service implementation of JDK5

功能

  • 统一的配置方式
  • 可以插件方式加载
  • 查询插件实现
  • 支持配置方式/编程方式

设计和实现原则

  • 概念上极简独立
    • 审视已有的概念,谨慎引入新概念。
    • 完全割除与容器不相关的概念
  • 实现上简单
    • 保持代码可读性。
    • 不考虑没有实际应用的概念。
    • 谨慎对待为性能优化;不能因此打乱代码的简单性。
  • 重视集成上的简易
    • 保持灵活的扩展性。
    • 开发者友好。
    • 集成是否简易是设计是否良好的有效指标。

项目起源

Dubbo项目中有一个微容器实现,这个微容器管理了Dubbo的各个扩展(组件):

  • 持有和初始化扩展
  • 能够以插件的方式加载扩展,从而可以由第三方写组件的插件
  • 关联扩展的自动注入(IOC)
  • 可以为扩展写公共Filter代码(AOP)

但Dubbo的微容器实现耦合微容器之外概念,并且功能复杂显得不清楚。这些都是代码的坏味道(bad smell)。所以把Dubbo的微容器的代码拿出来,这样可以独立改进,而不会有Dubbo的包袱。把这个实现命名为Cooma。

和Dubbo一样,Cooma也是一个地名,显示出和Dubbo的渊源有关系;
另外,和Container一样,Cooma以“Co”开头,表示是一个容器,方便联想记忆。