Java中的SPI機(jī)制有哪些作用?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)普陀,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108Java的SPI機(jī)制實(shí)例詳解
SPI的全名為Service Provider Interface.普通開發(fā)人員可能不熟悉,因?yàn)檫@個(gè)是針對(duì)廠商或者插件的。在java.util.ServiceLoader的文檔里有比較詳細(xì)的介紹。究其思想,其實(shí)是和"Callback"差不多?!癈allback”的思想是在我們調(diào)用API的時(shí)候,我們可以自己寫一段邏輯代碼,傳入到API里面,API內(nèi)部在合適的時(shí)候會(huì)調(diào)用它,從而實(shí)現(xiàn)某種程度的“定制”。
典型的是Collections.sort(List
把這個(gè)思想擴(kuò)展開來,我們用SPI來重新實(shí)現(xiàn)上面的例子??蛻舭炎约旱呐判蛞?guī)則寫成一個(gè)類,并且打包成Jar文件,這個(gè)Jar文件里面必須有META-INF目錄,其下又有services目錄,其下有一個(gè)文本文件,文件名即為接口的全名:
java.util.Comparator。 --META-INF --services --java.util.Comparator