26.服务提供者-注册服务

服务注册:注册中心

  • 此处注册中心我们将服务注册在map集合中,结构:Map<String,Map<URL,Class>>外边map的key存储,服务接口的全类名,URL封装了调用服务的ip和port,里边value指定具体实现类,注册中心类提供注册服务并暴露服务和发现服务功能:
public class URL {
    private String hostName;
    private Integer port;

    public URL(String hostName, Integer port) {
        this.hostName = hostName;
        this.port = port;
    }

    public String getHostName() {
        return hostName;
    }

    public void setHostName(String hostName) {
        this.hostName = hostName;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        URL url = (URL) o;
        return Objects.equals(hostName, url.hostName) &&
                Objects.equals(port, url.port);
    }

    @Override
    public int hashCode() {
        return Objects.hash(hostName, port);
    }
}

public class NativeRegistry {
    //注册中心
    private static Map<String, Map<URL,Class>> registryCenter=new HashMap<String, Map<URL,Class>>();

    /**
     * 注册服务
     */
    public static void registry(String interfaceName,URL url,Class implClass){
        Map<URL,Class> map=new HashMap<URL,Class>();
        map.put(url,implClass);
        registryCenter.put(interfaceName,map);
    }

    /**
     * 获取服务信息
     */
    public static Class get(String interfaceName,URL url){
        Map<URL, Class> urlClassMap = registryCenter.get(interfaceName);
        Class aClass = urlClassMap.get(url);
        return aClass;
    }
}
  • 注册服务
public class ServiceProvider {
    public static void main(String[] args) {
        //创建URL
        URL url = new URL("localhost", 8080);
        //注册服务
        NativeRegistry.registry(HelloService.class.getName(),url, HelloServiceImpl.class);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容