服务注册:注册中心
- 此处注册中心我们将服务注册在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);
}
}