浏览 3958 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-01-05 关键字: OSGi
Martin Fowler有一篇文章里称:说一个面向对象系统框架或结构是基于IoC的,就好像说汽车有四个轮子一样。非常精辟 ,IoC或者DI更多的是一个设计原则,一个设计良好的面向对象的系统或多或少都有这方面的特点,这与是否有一个IoC容器的关系不大,IoC容器的作用 是简化开发,强制系统遵循IoC原则而已。
OpenCore在最初设计的时候,没有考虑IoC容器的问题,主要是解决服务端的WEB开发、数据库访问、与REST远程通信等问题,我们完全使用 OSGi本身的服务注册机制,在插件启动时用代码实现依赖注射。直到今年8月份左右,我们把依赖注射的职责分离出来,在OSGi上实现了一个分级的IoC 容器,以简化开发,避免在插件启动类写依赖注射的代码。 OpenCore IoC容器有下面几个特性:
1. 每个插件(bundle)增加一个IoC的自描述文件META-INF/OPENCORE.XML,例如org.opengoss.web.core中,该文件的配置如下: xml 代码
2. 插件的激活类(Activator)不是直接实现OSGi本身的"BundleActivator"接口,而是继承由OpenCore提供的 "org.opengoss.core.PluginActivator",启动时,PluginActivator负责完成XML文件解析与依赖注射。 例如org.opengoss.web.core中的Activator代码如下: java 代码
3. 我们注意到上的的服务配置中有"scope"的属性,该属性定义一个服务的使用范围,确定一个服务注册到哪一级IoC容器。 4. 另外一点,我们在IoC基础上增加了动态扩展点功能,实现多对1的注射。 OpenCore整个项目代码发布在www.sf.net/projects/opengoss与code.google.com/p/opengoss下。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-11
大哥大,sf和google上都不能下啊!
|
|
| 返回顶楼 | |
|
最后更新时间:2007-02-11
吸血鬼 写道 大哥大,sf和google上都不能下啊!
download the sample project from: http://code.google.com/p/linktalk The core bundle is "org.opengoss.core.osgi" that implements the simple IoC container. We are still busy on this project but there is some different ideas on how to evolve the opencore platform. |
|
| 返回顶楼 | |



