• [Spring Cloud] Open Feign---扩展


    ✨✨个人主页:沫洺的主页

    📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                               📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                               📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

    💖💖如果文章对你有所帮助请留下三连✨✨

    衔接上篇: [Spring Cloud] Open Feign 使用_沫洺的博客-CSDN博客

    🌹Open Feign扩展

    创建子模块user-api

     pom.xml引入最小的依赖

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <parent>
    6. <groupId>com.mominggroupId>
    7. <artifactId>spring-cloud-rootartifactId>
    8. <version>0.0.1-SNAPSHOTversion>
    9. <relativePath>../pom.xmlrelativePath>
    10. parent>
    11. <artifactId>user-apiartifactId>
    12. <dependencies>
    13. <dependency>
    14. <groupId>org.springframeworkgroupId>
    15. <artifactId>spring-webartifactId>
    16. dependency>
    17. dependencies>
    18. project>

    父类pom中指定模块

    <module>user-apimodule>

    整理模块结构,改删的删

     定义接口

    1. public interface IUserService {
    2. //通过用户Id返回用户名称 /user/name?id=12
    3. @GetMapping("/user/name")
    4. String getName(@RequestParam Integer id);
    5. //通过用户Id返回用户金额 /user/amount?id=12
    6. @GetMapping("/user/amount")
    7. Integer getAmount(@RequestParam Integer id);
    8. }

    接下来模拟个场景,子模块a要去调用api中的接口

    a模块导入api依赖坐标

    1. <dependency>
    2. <groupId>com.mominggroupId>
    3. <artifactId>user-apiartifactId>
    4. <version>0.0.1-SNAPSHOTversion>
    5. <scope>compilescope>
    6. dependency>

    创建实现类去实现IUserService,模拟返回指定数据

    1. @RestController
    2. public class UserServiceImpl implements IUserService {
    3. @Override
    4. public String getName(Integer id) {
    5. return "张"+id;
    6. }
    7. @Override
    8. public Integer getAmount(Integer id) {
    9. return id*100;
    10. }
    11. }

    启动a模块,测试接口

     然后b模块去调用a服务时,就可以在AServiceClient中去实现IUserService

    1. @FeignClient("a")
    2. public interface AServiceClient extends IUserService {
    3. //@GetMapping("/a/test")
    4. //String test(@RequestParam(value = "name",required = false) String name);
    5. //
    6. //@GetMapping("/a/age/{age}")
    7. //String age(@PathVariable Integer age);
    8. }

    Debug测试

    1. @RestController
    2. public class B {
    3. @Autowired
    4. private AServiceClient aServiceClient;
    5. @GetMapping("use-openfeign")
    6. public String callAServer(@RequestParam(value = "nickName",required = false) String nickName){
    7. //String value = aServiceClient.test(nickName);
    8. //String value2 = aServiceClient.age(18);
    9. String value = aServiceClient.getName(3);
    10. return value;
    11. }
    12. //@Autowired
    13. //private RestTemplate restTemplate;
    14. //@GetMapping("/b/test")
    15. //public String test(@RequestParam(value = "nickName",required = false) String nickName){
    16. // //希望访问到A的应用
    17. // String ret = restTemplate.getForObject("http://a/a/test?name=张三", String.class);
    18. // return ret+"的小名: "+nickName;
    19. //}
    20. }

  • 相关阅读:
    【Swift 60秒】02 - Strings and Integers
    【数据开发】数据全栈知识架构,数据(平台、开发、管理、分析)
    CentOs7搭建基于pptp的VPN服务器
    CPU架构 -- ARMv7与ARMv8协处理器比较
    谈谈数字化转型成功的10个启示
    电影推荐 - 亲密
    Android保存文件路径汇总
    I2C知识大全系列一 —— I2C相关概念
    虚拟机的快照与克隆
    【AWS系列】六、 AWS Serverless之Lambda
  • 原文地址:https://blog.csdn.net/HeyVIrBbox/article/details/127913568