Nacos-spring-samples解析
小白们在看这个用例的时候得注意,这个东东不知道他是为了让大家能够快速体验还是怎么的,
反正我一开始没整明白,有点想当然的去理解了;
我一直以为这个Nacos-spring-samples只是一个简单的客户端,跟我之前的自己用例中去调用nacos一样(没有去看他的代码),
但是后面去看的时候有点想当然了,这个Nacos-spring-samples启动的时候触发了一个核心简易的nacos平台,看下他的配置文件
<listener> <listener-class>com.alibaba.nacos.embedded.web.servlet.EmbeddedNacosHttpServerListener</listener-class> </listener>
这个监听服务启动的时候会设置他的系统属性,就是nacos的IP地址加端口号,这个有点牛逼,动态的!
public class EmbeddedNacosHttpServerListener implements ServletContextListener { private static final String SERVER_ADDRESS_PROPERTY_NAME = "nacos.server-addr"; private EmbeddedNacosHttpServer httpServer; @Override public void contextInitialized(ServletContextEvent servletContextEvent) { try { if (!System.getProperties().containsKey(SERVER_ADDRESS_PROPERTY_NAME)) { httpServer = new EmbeddedNacosHttpServer(); httpServer.start(false); System.setProperty(SERVER_ADDRESS_PROPERTY_NAME, "127.0.0.1:" + httpServer.getPort()); } } catch (IOException e) { throw new RuntimeException(e); } } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { if (httpServer != null) { httpServer.stop(); } } }
public EmbeddedNacosHttpServer start(boolean blocking) { httpServer.createContext(path, nacosConfigHttpHandler); nacosConfigHttpHandler.init(); if (blocking) { startServer(); } else { future = executorService.submit(new Runnable() { @Override public void run() { startServer(); } }); } return this; }
private void startServer() { httpServer.start(); String threadName = Thread.currentThread().getName(); System.out.printf("[%s] Embedded Nacos HTTP Server(port : %d) is starting...%n", threadName, port); System.out.printf("[%s] Embedded Nacos HTTP Server mapped request URI : %s...%n", threadName, path); }
这样他就启动了一个微缩版的nacos客户端平台,而不是我们通常理解的下面这个平台,之前我一直用下面这个平台的参数去做测试,(# ̄~ ̄#)
提醒大家看的时候不要想当然,多看看代码,把下面这个方法简单的设置下,就可以设置成我们之前想当然的nacos
@Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.setProperty(SERVER_ADDRESS_PROPERTY_NAME, "127.0.0.1:" +"8848"); }
没有什么比每天有成长进步更高兴的事情