1. 程式人生 > >Spring 梳理 - JavaConfig、SCI、SPI

Spring 梳理 - JavaConfig、SCI、SPI

  1. 總結:spring  依據“java的SPI(Service Provider Interface)機制”和“servlet容器的SCI(ServletContainerInitializer)介面”,通過SpringServletContainerInitializer實現spring元件和servlet容器解耦,解耦後,spring元件可以直接使用spring提供的WebApplicationInitializer介面,實現類似SCI功能,通過實現WebApplicationInitializer,可以向servlet容器新增servlet,listener等
    1. 參考:[Servlet3.0研究之ServletContainerInitializer介面 - 夫禮者的專欄 - CSDN部落格: https://blog.csdn.net/lqzkcx3/article/details/78507169]
    2. 參考:[java中的SPI機制 - 司剛軍的個人專欄 - CSDN部落格: https://blog.csdn.net/sigangjun/article/details/79071850]
    3. 參考:[JavaSPI機制學習筆記 - 琴水玉 - 部落格園: http://www.cnblogs.com/lovesqcc/p/5229353.html]
    4. 參考:[Servlet3.0研究之ServletContainerInitializer介面 - 夫禮者的專欄 - CSDN部落格: https://blog.csdn.net/lqzkcx3/article/details/78507169]
    5. Service Provider Interface:

      java spi的具體使用如下  :

      當服務的提供者,提供了服務介面的一種實現之後,在jar包的META-INF/services/目錄裡同時建立一個以服務介面命名的檔案。該檔案裡就是實現該服務介面的具體實現類。而當外部程式裝配這個模組的時候,就能通過該jar包META-INF/services/裡的配置檔案找到具體的實現類名,並裝載例項化,完成模組的注入。 

      基於這樣一個約定就能很好的找到服務介面的實現類,而不需要再程式碼裡制定。

      jdk提供服務實現查詢的一個工具類:java.util.ServiceLoader