当前位置: 首页 > article >正文

open Feign服务抽取

open Feign虽然简化了远程调用,但是仍然存在着一些不太好的问题,这种问题并不是代码程序的问题,而是代码无法服用,无法构成一种编程的思维模式,如果一个服务需要多次被其他服务所引用并且服务数量很多的时候,代码程度就会很复杂,并且需要大量的重复编写同一个代码,这个时候就需要利用到maven的特性了,将服务提供统一封装到一个服务之中,然后再导入到其他需要的服务,这样就能实现代码的复用。

一般来说服务抽取有两种常用方式 :

1. 由微服务的开发商在编写的过程中就创建好两个子模块,分别暴露client接口和相关的类,这种方式也被称为防守型抽取

2.将所有的服务全部抽取到一个新的公共模块,在使用的时候就把这个模块导入进去,这种方式比第一张耦合度高一点

在这里实现一下第二种抽取方式,将client抽取到一个公共模块

在导入依赖方面只需要导入open Feign和loadbalancer依赖即可,如果有其他需求再导入就行了,比如swagger

1.创建一个公共的模块,可以不需要启动类,这个项目主要用于引入到maven,不会启动


2. 导入pom.xml依赖

<dependencies>
        <!--open feign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- load balancer-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <!-- swagger 注解依赖 -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.6.6</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

3.创建client包和DTO包,之所以要DTO是因为client需要

4. 将模块导入到其他需要调用的服务之中

  <!--          api    -->
        <dependency>
            <groupId>com.heima</groupId>
            <artifactId>hm-api</artifactId>
            <version>1.0.0</version>
        </dependency>

这样子启动会出问题,springboot无法扫描到client的包,无法创建bean是,使用需要手动扫描client的包,有两种方式

方式一:

方式二:

如果报错找不到依赖和文件,切记看一下api模块是不是缺少了build插件

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <phase>none</phase> <!-- 或者 <goals><goal>repackage</goal></goals> -->
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


http://www.kler.cn/a/449081.html

相关文章:

  • 汽车IVI中控开发入门及进阶(四十):FDK AAC音频编解码软件库
  • nest 学习3
  • 基于Matlab实现无刷直流电机仿真
  • 分数阶傅里叶变换
  • css让按钮放在最右侧
  • leetcode212. 单词搜索 II
  • 深入了解蓝牙Profile类型与设备的对应关系
  • SpringCloud 入门(2)—— 跨服务调度
  • 详细指南:如何手动卸载 Ubuntu 20.04 中源码编译安装的 OpenCV
  • 【华为OD-E卷-最左侧冗余覆盖子串 100分(python、java、c++、js、c)】
  • 如何让企业研发设计团队低配电脑流畅做3D大装配设计?
  • 【VScode】第三方GPT编程工具-CodeMoss安装教程
  • Webrtc音频模块(四) 音频采集
  • [SWPUCTF 2022 新生赛]什锦
  • linux网络 | 序列化反序列化的概念 与 结合网络计算器深度理解
  • Ubuntu概述
  • MySQL面试学习笔记(全)
  • 指数退避算法
  • Java-10
  • 04 Django模型基础
  • 怎么提取音频保存到本地?电脑音频提取方法
  • Laya ios接入goole广告,开始接入 2
  • 【CMD常用命令】
  • HBU深度学习手写作业11-LSTM
  • 读书笔记~管理修炼-缄默效应
  • Flink SQL 支持 kafka 开启 kerberos 权限控制.