jbpm源代码研究(二)-------IOC容器解析器

来源:互联网 发布:弹窗广告拦截软件 编辑:程序博客网 时间:2024/03/29 06:42

 在Configuration对象设置xml文件源的时候,Configuration就调用了Xml解析器将xml文件的内容解析成为Bean描述提前放入了IOC容器,然后容器会根据这个描述来采用各种策略构造和管理Bean;

 

 

 

类图如下:

 

 

 

 

 

 

jbpm.wire.bindings.xml如下:

 

另外我们也可以自定义jbpm.user.wire.bindings.xml文件;

 

 

比如我们拿RepositoryServiceBinding举例:

 

 

我们可以将repository-service元素翻译成为RepositoryServiceImpl的Descriptor,并且自动注入setAutoWireEnabled;到时候,我们可以看见我们不必手动注入RepositoryServiceImpl中的CommandService属性;

 

而如何把Descriptor得到 RepositoryServiceImpl呢?

 

在JbpmConfiguration中,会将get的IOC功能委托给wireContext:

 

 

在WireContext中:

 

首先会从缓存中去取,然后会选择从Definition中的Descriptor去取,这里的ResposityService就是这种情况,最后从环境中去取;

 

下面利用反射实例化Descriptor描述的Java 对象,在生成对象的前后,容器会触发生成事件,以实现一些enter-event类似事件;