OpenFeign 如何设置动态 URL?

简介: 本文介绍如何在OpenFeign中设置动态 URL

如果你利用 Spring Cloud OpenFeign 进行服务间调用一般会加入这个注解:


@FeignClient(name = "" ,url = "http://myapp.com",path = "")


可以看出其中的 url 参数是一个字符串,上面的配置是把它写“死”在代码中了。

如果我们想根据不同的环境作动态配置,让这个 url 动态的变化应该怎么办呢?

可以这样:


首先修改注解


@FeignClient(name = "" ,url = "${feign.client.url.TestUrl}",path = "")


然后添加配置文件,比如在你的 application-dev.yml 文件中


feign:
  client:
    url:
      TestUrl: http://dev:dev


在你的 application-pre.yml  文件中


feign:
  client:
    url:
      TestUrl: http://pre:pre


利用 Spring 的 EL 表达式,我们就可以让url 根据不同文件的不同值动态获得了。


另外,还可以给这个表达式指定默认值


1.jpg


也就是当配置文件没有这个配置的时候给一个默认的配置,这样的话,我们的注解要修改成如下:


@FeignClient(name = "" ,url = "${feign.client.url.TestUrl ?: 'http://myapp.com'}",path = "")


最后给出一个我在实际项目中的例子


@FeignClient(name = "idGenerateClient",
    path = "/v1/app/internal/test",
    url = "#{" +
        "('${spring.profiles.active}' eq 'local') ?  " +
        "('${feignclient-url." + APPConstant.APPLICATION_NAME + "}' ?: 'http://${env.domain}' ): " +
        "'http://" + APPConstant.APPLICATION_NAME + "'" +
        "}",
    fallbackFactory = XXXClientFallback.class)


feignclient-url:
  my-app: '127.0.0.1:8805'
相关文章
|
4月前
|
测试技术
Cypress如何设置全局URL?
Cypress如何设置全局URL?
|
4天前
|
网络协议 应用服务中间件 nginx
nginx 302 301 设置 url 转跳 nginx 资源重定向 nginx tcp 和 http 转发
nginx 代理后端网站,和 网站资源目录重定向到其他连接地址
39 3
宜搭详情页面URL设置
宜搭自定义详情页跳转问题
宜搭详情页面URL设置
|
8月前
|
机器人 SEO
SAP 电商云 Spartacus UI 根据 url 设置 site context 的具体例子
SAP 电商云 Spartacus UI 根据 url 设置 site context 的具体例子
55 0
|
10月前
|
JSON 前端开发 安全
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
186 0
|
10月前
|
前端开发 JavaScript 关系型数据库
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
499 0
|
XML JavaScript 前端开发
loadrunner 脚本录制-录制选项设置HTML-based URL-based Script
loadrunner 脚本录制-录制选项设置HTML-based URL-based Script
70 0
|
CDN
CDN设置防盗链及使用鉴权功能——鉴权URL控制台生成
CDN设置防盗链及使用鉴权功能——鉴权URL控制台生成自制脑图
280 0
CDN设置防盗链及使用鉴权功能——鉴权URL控制台生成
|
JSON 程序员 数据格式
retrofit动态设置URL采用反射机制解决
前几天开发项目的时候碰到一件比较头疼的事,就是获取json数据的主域名不一样,最简单粗暴的方法就是重新写一份retrofit,但这是十分低效的,写重复性代码就程序员最不想做的一件事之一,所以找了好多文章,最后找到了一个反射机制解决此问题的
118 0
|
存储 测试技术
Cypress如何设置全局URL?
大家好,我是阿萨。 昨天我们学习了skip和only。了解了如何排除某些测试用例,或者只执行某些测试用例。
153 0