https://github.com/apache/dubbo/issues/2180
里面说:Dubbo 源码中没有使用 after 和 before,且排序是存在问题的。
于是这两个方法,在 2.7.0 版本之后,被标注为不建议使用,宣告了该方法的死亡。
我不知道 2012 年,梁飞为什么引入了这两个方法,我也曾想从他的代码提交记录上找到点蛛丝马迹,可惜没有。
但是,有了另外的一个想法:
当年梁飞引入这两个方法后,他写的比较器,是否考虑到了这样的情况呢?
于是我马上又看了比较器的代码提交记录:
org.apache.dubbo.common.extension.support.ActivateComparator
并且把他的代码拷贝了出来,用同样的测试用例跑了一下:
很遗憾,也有一样的问题。
或许,当年就不应该引入这两个方法。
大道至简,学 Spring 的 Order,就只有一个 Order:
然后我又突然想了另外一个框架:SofaRPC。
SofaRPC 和 Dubbo 和 HSF 之间有着千丝万缕的爱恨情仇,于是我去瞅了一眼 SofaRPC 对应的地方:
com.alipay.sofa.rpc.ext.Extension
用于排序的,也就只是保留了 order。
这样比较器的代码就很简单了:
com.alipay.sofa.rpc.common.struct.OrderedComparator
另外,我顺便对比了一下梁飞最早写的比较器和现在最新的比较器的代码,功能完全一样,但是代码却差异较大: