springcloud本地服务不注册到注册中心的解决方案

 更新时间:2023年07月22日 09:36:59   作者:huchao_lingo  
这篇文章主要介绍了springcloud本地服务不注册到注册中心,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

开发人员本地的服务如果注册到服务器的注册中心,服务器上的服务如果调用到开发本地的服务会调用不通,影响大家的开发效率。

以往为了不把本地服务注册到注册中心,会采用以下几种处理方式:

1、修改服务名,例如:将user-service修改为user-service-double,这样别的服务就不会调用到开发人员本地注册上去的服务了

2、修改是否注册到注册中心的配置参数为false:

-Dspring.cloud.service-registry.auto-registration.enabled=false

第一种方案容易出现把修改后的service误提交到git的情况,导致测试、生产注册的服务名错误

第二种方案需要每个开发同学都手动到IDE配置一个启动参数,开发人员过多(100+)不能保证每个同学都执行到位

新方案:服务启动时判断操作系统类型,如果是Linux则注册服务,如果不是则不注册(本地服务都是windows、mac系统)将Processor处理类放入基础包中,这样每个服务都引用到,不需要每个开发同学都去处理本地服务不注册问题。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
/**
 * 在spring上下文构建之前可以设置一些系统配置
 * 可以在创建应用程序上下文之前,添加或者修改环境配置。
 *
 * @author double
 * @Date 2022/1/26 11:43 上午
 */
@Order(ConfigDataEnvironmentPostProcessor.ORDER + 1)
public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {
    private static final String PROPERTY_SOURCE_NAME = "discoveryProperties";
    private static final String SERVICE_REGISTRY_CONFIG_KEY = "spring.cloud.service-registry.auto-registration.enabled";
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment,
                                       SpringApplication application) {
        String serviceRegistry = environment.getProperty(SERVICE_REGISTRY_CONFIG_KEY);
        if(!StringUtils.hasText(serviceRegistry)) {
            boolean isLinux = System.getProperty("os.name").toLowerCase().contains("linux");
            Map<String, Object> map = new HashMap<>(1);
            map.put(SERVICE_REGISTRY_CONFIG_KEY, isLinux);
            MapPropertySource propertySource = new MapPropertySource(PROPERTY_SOURCE_NAME, map);
            environment.getPropertySources().addLast(propertySource);
        }
    }
}

到此这篇关于springcloud本地服务不注册到注册中心的文章就介绍到这了,更多相关springcloud注册中心内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis学习笔记之mybatis注解配置详解

    mybatis学习笔记之mybatis注解配置详解

    本篇文章主要介绍了mybatis学习笔记之mybatis注解配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java值得使用Lambda的8个场景合集

    Java值得使用Lambda的8个场景合集

    可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,但毕竟2023年了,JDK都出了那么多新版本,是时候试试Lambda了
    2023-08-08
  • SpringBoot动态定时任务、动态Bean、动态路由详解

    SpringBoot动态定时任务、动态Bean、动态路由详解

    这篇文章主要介绍了SpringBoot动态定时任务、动态Bean、动态路由详解,之前用过Spring中的定时任务,通过@Scheduled注解就能快速的注册一个定时任务,但有的时候,我们业务上需要动态创建,或者根据配置文件、数据库里的配置去创建定时任务,需要的朋友可以参考下
    2023-10-10
  • java实现图像转码为字符画的方法

    java实现图像转码为字符画的方法

    这篇文章主要为大家详细介绍了java实现图像转码为字符画的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java访问权限原理与用法详解

    Java访问权限原理与用法详解

    这篇文章主要介绍了Java访问权限,结合实例形式详细分析了java构造者思想、包、访问修饰符等相关原理、应用与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • MybatisPlus代码生成器含XML文件详解

    MybatisPlus代码生成器含XML文件详解

    这篇文章主要介绍了MybatisPlus代码生成器含XML文件详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java编写网络聊天程序实验

    Java编写网络聊天程序实验

    这篇文章主要为大家详细介绍了Java编写网络聊天程序实验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java中递归原理实例分析

    Java中递归原理实例分析

    这篇文章主要介绍了Java中递归原理,实例分析了java中递归的原理与实现方法,以及使用过程中的相关技巧,需要的朋友可以参考下
    2015-05-05
  • idea tomcat乱码问题的解决及相关设置的步骤

    idea tomcat乱码问题的解决及相关设置的步骤

    这篇文章主要介绍了idea tomcat乱码问题的解决及相关设置的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • java多线程编程之管道通信详解

    java多线程编程之管道通信详解

    这篇文章主要为大家详细介绍了java多线程编程之线程间的通信,探讨使用管道进行通信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论