Dependency Mediator,与Karaf 和其他轻量级模块化技术(类似 osgi,类名不需要是唯一的,但是类名组合和他们定义的 ClassLoader 必须是唯一的)不同, D ependency Mediator 尝试在编译期诊断组件依赖冲突问题,而不是使用自定义的 ClassLoader 来保持不同版本组件的一致性,因此可以有效避免一些臭名昭著的运行期兼容性错误,例如 NoSuchMethodError,NoSuchFieldError 和 NoClassDefFoundError 等等。
特性
兼容 Maven 3.x.x 插件可编程模块
兼容 JDK 6+
支持直接扫描,包括 classpath
支持组件扫描,包括 jar,war,ear,sar 等等
支持冲突类扫描,冲突意味着相同的完全限定类名,而不是相同的数据或者不兼容的类(details see jls and class compatibility)
使用
Output component reactor info...... Conflicting component [com.alibaba.rocketmq.storm.MessageConsumerManager] was founded in the path : /home/von/workspace/rocketmq-storm/dd/rocketmq-storm-1.0.0-SNAPSHOT-11/com/alibaba/rocketmq/storm/MessageConsumerManager.class /home/von/workspace/rocketmq-storm/dd/rocketmq-storm-1.0.0-SNAPSHOT.jar:com/alibaba/rocketmq/storm/MessageConsumerManager.class Conflicting component [com.alibaba.rocketmq.storm.MessageConsumer] was founded in the path : /home/von/workspace/rocketmq-storm/dd/rocketmq-storm-1.0.0-SNAPSHOT-11/com/alibaba/rocketmq/storm/MessageConsumer.class /home/von/workspace/rocketmq-storm/dd/rocketmq-storm-1.0.0-SNAPSHOT/com/alibaba/rocketmq/storm/MessageConsumer.class