Spring中Order介面的作用

2021-07-25 09:56:30 字數 1469 閱讀 5276

spring中ordered介面簡介 目錄前言 spring中提供了乙個ordered介面。ordered介面,顧名思義,就是用來排序的。 spring是乙個大量使用策略設計模式的框架,這意味著有很多相同介面的實現類,

spring中ordered介面簡介

目錄 前言

spring中提供了乙個ordered介面。ordered介面,顧名思義,就是用來排序的。

spring是乙個大量使用策略設計模式的框架,這意味著有很多相同介面的實現類,那麼必定會有優先順序的問題。

於是,spring就提供了ordered這個介面,來處理相同介面實現類的優先順序問題。

ordered介面介紹 首先,我們來看下ordered介面的定義:

只有1個方法:getorder();  2個變數:最高端(數值最小)和最低階(數值最大)。

ordercomparator類:實現了comparator的乙個比較器。

提供了3個靜態排序方法:sort(list> list)、sort(object array)、sortifnecessary(object value)。根據ordercomparator對陣列和集合進行排序。

sortifnecessary方法內部會判斷value引數是object還是list型別,然後使用object引數的sort方法和list引數的sort方法進行排序。

我們看下這個比較器的compare方法:

public int compare(object o1, object o2) else if (p2 && !p1)  int i1 = getorder(o1); inti2 = getorder(o2); return (i1 < i2) ? -1 : (i1 > i2) ? 1 : 0; } priorityordered是個介面,繼承自ordered介面,未定義任何方法。

這段**的邏輯:

1. 若物件o1是ordered介面型別,o2是priorityordered介面型別,那麼o2的優先順序高於o1

2. 若物件o1是priorityordered介面型別,o2是ordered介面型別,那麼o1的優先順序高於o2

3. 其他情況,若兩者都是ordered介面型別或兩者都是priorityordered介面型別,呼叫ordered介面的getorder方法得到order值,order值越大,優先順序越小

簡單概括就是:

ordercomparator比較器進行排序的時候,若2個物件中有乙個物件實現了priorityordered介面,那麼這個物件的優先順序更高。

若2個物件都是priorityordered或ordered介面的實現類,那麼比較ordered介面的getorder方法得到order值,值越低,優先順序越高。

ordered介面在spring中的使用 以springmvc為例,舉例ordered介面的運用。

關於這部分的內容,請參考樓主的另外一篇部落格:

答案當然是可以的。

很明顯使用了我們提到的ordercomparator比較器進行了排序。

Spring中Aware介面的使用

第一步 配置xml,並實現要繼承的2個類和測試類 xml xmlns xsi schemalocation package com.imooc.aware 繼承beannameaware的類 package com.imooc.aware import org.springframework.bea...

框架 Spring下介面的測試方法

系統中存在使用者的概念,介面測試時需要額外考慮處理登入的過濾器。介面篡改資料,對於長流程的呼叫一步到底太過繁瑣,直接更改可能產生髒資料。使用 primary和 bean 遮蔽 掉容器內的過濾器。使用 sqlgroup建立記憶體資料庫。過濾器配置類skipauthconfig 根據skipauth進行...

c 中介面的作用

好像看了很多書中都沒有介紹c 介面的作用。經我實踐,好像是有兩方面的作用 1 約束作用,這個這麼理解,凡是繼承了這個介面的類都必需實現這個介面的所有函式,哪怕是空著,那麼,既然都繼承了這個介面,那方就必定有介面的函式,那麼呼叫介面裡的函式就放心大膽,這就是一種約定,必需且有什麼功能。2 統一呼叫,也...