首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

传统Spring项目使用FeignClient组件访问微服务

传统Spring项目使用

这里的传统 项目指的是没有使用 的 项目,例如

api 文件

和在spring cloud 项目中使用 一样,不过这里在注解上加上了 配置, 注意这里 url 不要写死,采用占位符的形式,通过spring属性进行配置

其中通过动态配置 url 来实现在 spring cloud 外部调用接口

FeignClient注解源码

在源码中可以看到比较有用的四个注解 , , ,

name 指定微服务的实例名称,唯一,必填,通过实例名称可以得到实例对应的访问地址

fallback 配置熔断

url 配置一个绝对的地址访问,默认为空字符串,当其不空时,则使用该地址访问

path 配置一个所有方法级别的mappings 相当于在类上加 requestMapping, 例如上面的 所有访问地址为 /user/xxx

注意: 请求路径和 无关,

如果想访问以上地址,api 有三种实现方式

在所有的方法上写明全路径 例如 @RequestMapping("/user/xxx1")

在类上写 @RequestMapping("user") 在对应方法写 @RequestMapping("xxx1")

使用 FeignClient 的 path 标注

配置

如果使用非 spring cloud,则应该在 api 的 FeignClient 注解上设置 url,例如例子程序

在项目配置 properties 文件,这里我使用 server.properties

下面是我测试的时候自己起的网关地址

server.properties

这里配置的 spring mvc 项目,配置servlet 主要为了加载web.xml

application.xml

这里主要为了加载属性文件

添加配置类

EnableFeignClients 设置对应的 api 路径,可设置多个,其中要配置一个 用来解码,可设置其他

测试

userServiceAPI直接注入即可

对应pom文件

小结

为了测试方便,这里使用了 springmvc 项目,同时引入一个 spring cloud 项目中已经写好的 feignclient 的 api,通过测试 springmvc 能否调通 feignclient 定义的接口来确定测试是否成功,在引入 feignclient 的依赖时,去除了 eureka 的依赖,起初我在配置 application.xml 时,添加了 mvc 的HttpMessageConverters 的支持,当我调用 feignclient 一直报错,提示我找不到 HttpMessageConverters 的bean,很苦恼,明明配置了HttpMessageConverters 为什么还注入不进入,最后直接 创建了一个 bean 这才成功,通过使用这种方式,可以在原来 ssm 或 ssh 项目结构不改变的情况下,使用 spring cloud 提供的 feignclient ,调用其他服务的接口,减小升级成本和风险

怕什么真理无穷,近一寸有一寸的欢喜

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171213G10BAP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券