国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Dubbo Spi機制

mrli2016 / 3053人閱讀

摘要:為了實現在模塊裝配的時候,不在模塊里寫死代碼,就需要一種服務發現機制。就提供了這樣一種機制為某個接口尋找服務實現,有點類似思想,將裝配的控制權移到代碼之外。即接口文件的全類名。五示例遵循上述第一條第點,這里為接口文件,其中和為兩個實現類。

一、Dubbo內核

Dubbo內核主要包含SPI、AOP、IOC、Compiler。

二、JDK的SPI

1.spi的設計目標:

面向對象的設計里,模塊之間是基于接口編程,模塊質檢不對實現類進行硬編碼。一旦代碼里涉及具體的實現類,就違反了可插拔的原則,如果需要替換一種實現,就需要修改代碼。為了實現在模塊裝配的時候,不在模塊里寫死代碼,就需要一種服務發現機制。Java SPI就提供了這樣一種機制:為某個接口尋找服務實現,有點類似IOC思想,將裝配的控制權移到代碼之外。

2.JDK的SPI的默認約定

當服務的提供者提供了一個接口的多種實現時,一般會在jar包的META-INF/services目錄下,創建該接口的同名文件,文件的內容就是該服務接口的具體實現類的全類名。

三、Dubbo為什么不采用JDK的SPI

JDK標準的SPI會一次性實例化擴展點所有實現,如果有擴展實現初始化很耗時。但如果沒用上也加載,會很浪費資源。針對這個問題,Dubbo增加了對擴展點IoC和AOP的支持,一個擴展點可以直接setter注入其它擴展點。

四、Dubbo SPI的默認約定

1.spi 文件存儲路徑在META-INFdubbointernal 目錄下并且文件名為接口的全路徑名。即接口文件的全類名。

2.每個spi 文件里面的格式定義為: 擴展名=具體的類名,例如 dubbo=com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtoco。使用時通過key加載(如dubbo),可以實現部分加載。

五、SPI示例


遵循上述第一條第2點,這里Command為接口文件,其中StartCommand和ShutdownCommand為兩個實現類。需要在resources目錄下建META-INF子目錄,在META-INF下建services目錄,然后以接口全路徑作為文件名創建文件,內容為接口實現類的全類型名。

Command.java

package com.dongqiang.soa.spi;
/**
 * Created by qiangdong on 2018/2/2.
 */
public interface Command {
    void execute();
}

StartCommand.java

package com.dongqiang.soa.spi;
/**
 * Created by qiangdong on 2018/2/2.
 */
public class StartCommand implements Command {
@Override
    public void execute() {
        System.out.println("start command.");
    }
}

ShutdownCommand.java

package com.dongqiang.soa.spi;
/**
 * Created by qiangdong on 2018/2/2.
 */
public class ShutdownCommand implements Command {

    @Override
    public void execute() {
        System.out.println("ShutdownCommand");
    }
}

Main類:

package com.dongqiang.soa.spi;
import java.util.ServiceLoader;

/**
 * Created by qiangdong on 2018/2/2.
 */
public class Main {

    public static void main(String[] args) {
        ServiceLoader serviceLoader = ServiceLoader.load(Command.class);

        for (Command command : serviceLoader) {
            command.execute();
        }
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68501.html

相關文章

  • 聊聊Dubbo - Dubbo可擴展機制實戰

    摘要:今天我想聊聊的另一個很棒的特性就是它的可擴展性。的擴展機制在的官網上,描述自己是一個高性能的框架。接下來的章節中我們會慢慢揭開擴展機制的神秘面紗。擴展擴展點的實現類。的定義在配置文件中可以看到文件中定義了個的擴展實現。 摘要: 在Dubbo的官網上,Dubbo描述自己是一個高性能的RPC框架。今天我想聊聊Dubbo的另一個很棒的特性, 就是它的可擴展性。 Dubbo的擴展機制 在Dub...

    techstay 評論0 收藏0
  • dubbo源碼解析(二)Dubbo擴展機制SPI

    摘要:二注解該注解為了保證在內部調用具體實現的時候不是硬編碼來指定引用哪個實現,也就是為了適配一個接口的多種實現,這樣做符合模塊接口設計的可插拔原則,也增加了整個框架的靈活性,該注解也實現了擴展點自動裝配的特性。 Dubbo擴展機制SPI 前一篇文章《dubbo源碼解析(一)Hello,Dubbo》是對dubbo整個項目大體的介紹,而從這篇文章開始,我將會從源碼來解讀dubbo再各個模塊的實...

    DirtyMind 評論0 收藏0
  • dubboSPI

    摘要:簡介全稱為,是一種服務發現機制。的本質是將接口實現類的全限定名配置在文件中,并由服務加載器讀取配置文件,加載實現類。不過,并未使用原生的機制,而是對其進行了增強,使其能夠更好的滿足需求。并未使用,而是重新實現了一套功能更強的機制。 1、SPI簡介 SPI 全稱為 Service Provider Interface,是一種服務發現機制。SPI 的本質是將接口實現類的全限定名配置在文件中...

    UnixAgain 評論0 收藏0
  • Dubbo SPI機制和IOC

    摘要:要構建自適應實例,先要有自適應的實現類,實現類有兩種方式一種通過配置文件,一種是通過是字節碼的方式動態生成。 SPI機制 SPI,即(service provider interface)機制,有很多組件的實現,如日志、數據庫訪問等都是采用這樣的方式,一般通用組件為了提升可擴展性,基于接口編程,將操作接口形成標準規范,但是可以開放多種擴展實現,這種做法也符合開閉設計原則,使組件具有可插...

    Scorpion 評論0 收藏0
  • dubbo擴展點機制

    摘要:在中配置,以配置為例整個,最先使用的地方從里面讀取這個配置使用接口的中獲取具體的實現類中有兩個值當主線程被外部終止時,會觸發,執行的與方法通知下面的鎖操作,主線程正常走完代碼,并最終停止。 spring是如何啟動容器的 常見的一種在本地使用main方法啟動spring的方法 public static void main(String[] args) throws Except...

    Rindia 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<