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");

    }

 

posted @ 2019-06-24 16:03  龙X  阅读(668)  评论(0编辑  收藏  举报