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

}


  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值