在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类似事件;