Nacos-spring-samples解析

Posted longxok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");

    

 

以上是关于Nacos-spring-samples解析的主要内容,如果未能解决你的问题,请参考以下文章

视图解析相关 后端数据传递到前端无Ajax

Pygame错误:self.spritedict [spr] = surface_blit(spr.image,spr.rect)

(转)spring源码解析,深入了解spring

Spring AOP 源码解析

Spring AOP 源码解析

Spring Security 解析 —— 基于JWT的单点登陆(SSO)开发及原理解析