zoukankan      html  css  js  c++  java
  • 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");
    
        }
  • 相关阅读:
    MATLAB——sigmoid传递函数
    MATLAB——BP神经网络
    MATLAB——神经网络构造线性层函数linearlayer
    MATLAB——线性神经网络
    MTALAB——神经网络mae()、mse()、sse()
    详解 Java 中的三种代理模式!
    HTTP 无状态中的状态到底指的是什么?
    单例模式的 8 种写法,整理非常全!
    数据库连接池到底应该设多大?
    Spring 框架用到的 9 个设计模式汇总!
  • 原文地址:https://www.cnblogs.com/longxok/p/11077637.html
Copyright © 2011-2022 走看看