dubbo启动服务之容器(Container)

原文:http://www.ccblog.cn/75.htm  这里看的更清晰写

 

 

一:SPI 简介

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现,而后,把新加的实现,描述给JDK知道就行啦(通过改一个文本文件即可) ,公司内部目前Dubbo框架就基于SPI机制提供扩展功能。

代码例子

 

public interface Cmand {
    public void execute();
}
public class ShutdownCommand implements Cmand {
    public void execute() {
        System.out.println("shutdown....");  
    }
}
public class StartCommand implements Cmand {
    public void execute() {
        System.out.println("start....");
    }
}
public class SPIMain {
    public static void main(String[] args) {
        ServiceLoader<Cmand> loader = ServiceLoader.load(Cmand.class);
        System.out.println(loader);
        
        
        for (Cmand Cmand : loader) {
            Cmand.execute();
        }
    }
}

 

配置:

com.unei.serviceloader.impl.ShutdownCommand  

com.unei.serviceloader.impl.StartCommand 

 

 

运行结果:

java.util.ServiceLoader[com.unei.serviceloader.Cmand]
shutdown....
start....

 

猜你喜欢

转载自zhp8341.iteye.com/blog/2296338
今日推荐