feign踩坑_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) ;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值