zoukankan      html  css  js  c++  java
  • SpringCloud Feign 踩到的坑(一)

    最近在使用SpringCloud的context-path时,遇到了一些坑,记录一下。

    server.context-path(上下文)

    服务提供者的application配置文件中有一个属性叫server.context-path,是上下文。
    如下示:

    server.context-path=/dev
    

    如果没有上下文,我们访问一个接口的路径可能是:
    localhost:8080/user/
    如果有上下文dev,那么这个url必须写成:
    localhost:8080/dev/user/
    也就是说:
    服务消费者对服务提供者的方法进行访问时,url也要加上context-path上下文。

    服务消费者Feign

    我这边项目使用的是Feign进行服务消费,将context-path加在了方法的value里面。
    如下:

    @FeignClient(value="user",fallback=UserMsgHystrix.class)
    public interface UserMsgService {
    
       /**
         * 推送消息
         * 注意:此处的dev 是服务提供者的上下文
         */
    	@RequestMapping(value = "/dev/sentMsg", method = RequestMethod.POST)
    	public JSONObject sentMsgToWeChat(JSONObject invoiceJson) ;
    }
    
    

    多个环境的context-path

    如果只有一个本地环境,那么采用上面的做法就解决了。
    但是在实际开发中,往往有多个环境。比如本地环境,开发环境,测试环境,正式环境。
    而不同的环境又有不同的上下文,比如开发环境上下文设为/dev,测试环境上下文设为/test。
    不同环境的上下文,可以使用@FeignClient的path属性,读取properties文件的值。
    查看@FeignClient的源码,可以看到path的注释:

    	/**
    	 * Path prefix to be used by all method-level mappings. Can be used with or without
    	 */
    	String path() default "";
    

    意思就是:path可以给方法的url添加前缀

    在服务消费者的开发环境properties文件中,加入:

    providerContext=dev
    

    在服务消费者的测试环境properties文件中,加入:

    providerContext=test
    

    在服务消费者的正式环境properties文件中,加入:

    providerContext=/
    

    Feign服务消费的代码如下示:

    @FeignClient(value="user",fallback=UserMsgHystrix.class)
    public interface UserMsgService {
    	@RequestMapping(value = "sentMsg",path="${providerContext}", method = RequestMethod.POST)
    	public JSONObject sentMsgToWeChat(JSONObject invoiceJson) ;
    }
    
  • 相关阅读:
    chrome更新后,恢复本地丢失的书签和历史记录
    redis 集合set 使用 rediscluster 使用交集
    git 删除分支恢复
    SQL语句性能优化
    A调用B,b有事务,a没有
    Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentica 问题处理
    fasnjson 转换
    String.format()的详细用法
    传递json
    基础入门-加密编码算法
  • 原文地址:https://www.cnblogs.com/expiator/p/10581969.html
Copyright © 2011-2022 走看看