精通组件兼容性依赖

<<精通组件兼容性依赖>>,这篇文章首先从Java语言层面阐述了什么是兼容性,JDK是如何处理兼容性的?然后提出了一个最佳实践路线图,首先要保证你的组件包是面向接口编程的,别人可以稳定地依赖你的接口,而实现可以采用动态发现的机制去做。并用SLF4j和Maven Dependency插件作为推荐准则,讲解了它们的源码实现,顺便引出了臭名昭著的commons logging的ClassLoader问题,感兴趣的同学可以顺藤摸瓜,一探究竟。其次介绍了组件签名&兼容性保护策略,使用开源已有工具可以轻松帮助我们解决这类问题。最后,也是重中之重,介绍了Dependency
Mediator项目的初衷,和OSGI等模块化思路不同,它试图通过编译期检查而不是运行期隔离的方式,为我们降解三类常见运行期错误:NoSuchMethodError,NoSuchFieldError 和 NoClassDefFoundError。项目目前已经发布了1.0版本,而在2.0版本中,会有重量级的优化和功能,希望大家多多使用。

当然,文章比较长,大家如果能耐心通读,势必会对兼容性依赖这个领域有更深刻的认识,也欢迎大家积极在Issue上提需求和BUG,好的产品离不开大家的帮助!

文章地址:Mastering Component Compatible Dependency

项目地址:dependency-mediator

时间: 2024-10-15 16:04:50

精通组件兼容性依赖的相关文章

[NHibernate]组件之依赖对象

目录 写在前面 文档与系列文章 组件之依赖对象 一个例子 总结 写在前面 周一至周四一直在成都出差,也一直没有更新博客了,一回到家第一件事就是扒一扒最近博客园更新的文章,然后把想看的收藏了,大概有20篇左右,包括基础的js或者jquery(快速浏览,复习基础),java方面的(主要了解实现业务的思想),asp.net webform\mvc(webform的快速浏览,mvc深入理解)等等,从昨天晚上到今天上午算是花费了7.8个小时的时间把收藏夹里面的文章看了一边. 现在就继续NHibernate

基于ABP模块组件与依赖注入组件的项目插件开发

注意,阅读本文,需要先阅读以下两篇文章,并且对依赖注入有一定的基础. 模块系统:http://www.cnblogs.com/mienreal/p/4537522.html 依赖注入:http://www.cnblogs.com/mienreal/p/4550500.html 正文: 我最近在设计一个项目,而这个项目的一些业务功能,需要以插件的方式提供给这个项目,从而降低耦合性,主项目不会对具体业务功能产生依赖. 在以前,最简单粗暴的方式,就是扫描主程序目录下的所有dll或指定目录下的dll,然

NHibernate之旅(8):巧用组件之依赖对象

本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性(就是Firstname和Lastname的组合)该怎么做呢? 方案1:直接添加 "我知道!修改Customer类,添加一个Fullname属性!即Customer.Fullname!" "恩,完全正确......" "这就意味着在Customer类中把Fir

[转]NHibernate之旅(8):巧用组件之依赖对象

本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性(就是Firstname和Lastname的组合)该怎么做呢? 方案1:直接添加 “我知道!修改Customer类,添加一个Fullname属性!即Customer.Fullname!” “恩,完全正确......” “这就意味着在Customer类中把Firstname和Lastname两个属性重

项目中遇到的问题:关系图组件兼容性问题解决

1.   问题背景 在开发“客户群成员关系图”功能时,用到了关系图组件MxClient库,在开发过程中,发现该组件在IE8及IE9下有兼容性问题:不能展示图形节点的背景图及样式.不能展示关系图之间的连接线.在IE8兼容模式下.在IE6及IE7下都能正常展示,在IE8标准模式及IE9标准模式下,都不能正常展示. 2.   问题现象 不能正常展示的现象如果下图所示: 3.   问题原因 在排查原因的过程中,发现同样的关系图展示代码,在另外的模块(客户族群管理),能够正常展示关系图数据,由此判断关系图

Prism4 文档翻译系列---第3章 管理组件间的依赖关系

基于Prism类库的应用程序可能是由多个松耦合的类型和服务组成的复杂应用程序,他们需要根据用户的动作发出内容和接收通知进行互动,由于他们是松耦合的,他们需要一种方式来互动和交流来传递业务功能的需求. 为了将这些零散的模块组合在一起,基于Prism的应用程序使用了一个依赖注入容器,依赖注入容器通过基于容器的配置提供实例化类对象并且管理它们的声明周期减少了对象之间的依赖耦合关系.在创建对象时,容器将其所需要的依赖全部注入其中.如果这些依赖还没有被创建,容器将会首先创建并解析依赖所需要的对象或者它的依

在Visual Studio中使用组件图描述项目组件依赖关系

如果想描述项目组件的关系,可以考虑使用UML组建图. 在建模项目下添加一个名称为"Applicaiton Component Structure"的UML组建图. 添加各个组件,并添加依赖关系. 在必要的时候,给组件添加备注. 如果想给依赖关系备注,需要在Name属性中设置. 可以为组件添加接口. 备注: ● 明确项目中的可执行程序和组件● 明确各个组件的依赖关系● 必要的时候明确组件的实现接口 参考资料:https://channel9.msdn.com/Blogs/clinted

分享两款.NET电子表格组件的使用心得

大家早已习惯了电子表格带来的方便,对表格的需求也越来越高.作为一个开发人员,我尝试了多款表格控件,SpreadsheetGear和Spread.NET这两款软件是我认为比较好用的,下面就我对这两款表格控件的使用简单的总结一下,希望和大家多多交流. Spread.NET 大家可能最早了解Spread是从它的COM开始,VB的程序员都应该知道.Spread.NET是用于.NET开发的,嵌入Microsoft Excel 的电子表格平台,目前也支持Winform和Asp.NET两种模式,且对Excel

两款.NET电子表格组件使用心得

大家早已习惯了电子表格带来的方便,对表格的需求也越来越高.作为一个开发人员,我尝试了多款表格控件,SpreadsheetGear和Spread.NET这两款软件是我认为比较好用的,下面就我对这两款表格控件的使用简单的总结一下,希望和大家多多交流. Spread.NET 大家可能最早了解Spread是从它的COM开始,VB的程序员都应该知道.Spread.NET是用于.NET开发的,嵌入Microsoft Excel 的电子表格平台,目前也支持Winform和Asp.NET两种模式,且对Excel