Cooma是一个简单的Java微容器(microcontainer)实现,加载扩展点(Extension);是把Dubbo中使用的微容器独立拿出来了。
实现原型来自于Service implementation of JDK5。
0.1.0主要是清理代码,之前的有些混乱的调用次序、关系,剥去了和Dubbo相关的概念。Cooma精简(代码行1000-),功能实用,如果想要一个简单的扩展点/插件容器,可以参考一下。
- release tickets
- Source code download
- 项目文档
文档还在持续整理中。。。 - 项目主页
这几天把之前想到内容记成了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”开头,表示是一个容器,方便联想记忆。
FEATURED TAGS
生活
blog
Java
shell
Unix/Linux
unix
Groovy
jms
mom
middleware
extension
log4j
philosophy
原则
最佳实践
Shell
generic
gnu
windows
cmd
tips
dubbo
Service
设计
class
date
i/o
api
design
服务
优劣
Linux
git
week
日期
星期
计算
月份
命令行
配置
Windows
Dubbo
约定
权限
Command Line
发布
java
cooma
release
微容器
github
microcontainer
扩展点
容器