最近在使用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) ;
}

SpringCloud Feign context-path踩到的坑的更多相关文章

  1. 初学spring boot踩过的坑

    一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  2. 【转载】Fragment 全解析(1):那些年踩过的坑

    http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...

  3. CentOS7.2上用KVM安装虚拟机window10踩过的坑

    最近两个星期一直在琢磨kvm安装window10操作系统,并且通过桥接模式与外界通信,经历了九九八十一难,终于搞定.下面就记录以下我们在探索的过程中踩过的坑. 安装KVM 1. 系统要求:需要一台可以 ...

  4. wrk 使用记录及踩过的坑

    wrk是什么?https://github.com/wg/wrk wrk 是一个非常小巧高效的开源性能测试工具,支持lua脚本来创建复杂的测试场景.wrk 的一个很好的特性就是能用很少的线程压出很大的 ...

  5. vue项目开发中踩过的坑

    一.路由 这两天移动端的同事在研究vue,跟我说看着我的项目做的,子路由访问的时候是空白的,我第一反应是,不会模块没加载进来吧,还是....此处省略一千字... 废话不多说上代码 路由代码 { pat ...

  6. git工作中常用命令-工作中踩过的坑

    踩坑篇又来啦,这是我在工作中从git小白进化到现在工作中运用自如的过程中,踩过的坑,以及解决办法. 1.基于远程develop分支,建一个本地task分支,并切换到该task分支 git checko ...

  7. SpringCloud Feign 之 Fallback初体验

    SpringCloud Feign 之 Fallback初体验 在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件.Feign是声明式,模板化的HTTP客户端,可以帮助我们更方 ...

  8. 创建优化的Go镜像文件以及踩过的坑

    在Docker上创建Go镜像文件并不困难,但建立的文件很大,接近1G,使用起来不太方便.Docker镜像的一个主要难题就是如何优化,创建小的镜像.我们可以用多级构建的方法来创建Docker镜像文件,它 ...

  9. 最细的eclipse 安装maven踩过的坑

    Eclipse安装maven插件踩过的坑 在线安装maven eclipse安装maven插件,在网上有各种各样的方法,博主使用过的也不止一种,但是留下的印象总是时好时不好,同样的方法也不确定那一次能 ...

  10. SpringCloud Feign通过FallbackFactory显示异常信息

    SpringCloud Feign可以进行服务消费,而且内置了Hystrix,能够进行熔断. Feign可以通过fallback指定熔断回调的类.代码示例及讲解可见: https://www.cnbl ...

随机推荐

  1. C#词频统计 效能分析

    在邹老师的效能分析的建议下对上次写过的词频统计的程序进行分析改进. 效能分析:个人很浅显的认为就是程序的运行效率,代码的执行效率 1.VS 提供了自带的分析工具:performance tool (性 ...

  2. java android 捕获未处理异常

    1. 定义一个异常处理类 public class ExceptionHandler implements Thread.UncaughtExceptionHandler { public Excep ...

  3. algernon 基于golang 的独立的支持redis lua pg。。。 的web server

    algernon 看到github 的介绍很很强大,一下子想到了openresty,功能看着很强大,支持 redis pg lua markdown quic http2 mysql 限速 pongo ...

  4. 创建一个dynamics 365 CRM online plugin (二) - fields检查

    Golden Rules 1. Platform only passes Entity attributes to Plugin that has change of data. 2. If the ...

  5. 修改linux服务器的MySQL密码

    1.   首先用管理员权限登陆Linux: 2.   输入:vi  /etc/my.cnf  回车.然后按“i”键盘,在这个文件中的最后一行输入:skip-grant-tables   然后按 esc ...

  6. Python Django orm操作数据库笔记之外键和表关系

    外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的. 外键的使用 使用外键前需要先确保相应外键已存储在数据库中(flask中 ...

  7. https://api.highcharts.com/gantt/

    <a href="https://api.highcharts.com/gantt/">https://api.highcharts.com/gantt/</a& ...

  8. SpringBoot Web开发(3) WebMvcConfigurerAdapter过期替代方案

    springboot2.0中 WebMvcConfigurerAdapter过期替代方案 最近在学习尚硅谷的<springboot核心技术篇>,项目中用到SpringMVC的自动配置和扩展 ...

  9. JVM优化系列之一(-Xss调整Stack Space的大小)

    Java程序中,每个线程都有自己的Stack Space(堆栈).这个Stack Space不是来自Heap的分配.所以Stack Space的大小不会受到-Xmx和-Xms的影响,这2个JVM参数仅 ...

  10. windows异常事件对应的ID

    转载地址: Windows 2008 R2查看异常关机或开机事件ID https://blog.csdn.net/hejun1218/article/details/81059327