小企业适用的组件化的服务间的调用

简介: 小企业适用的组件化的服务间的调用


image.png

服务间调用是微服务体系中必不可少的一部分,在springcloud  alibaba的官网中,推荐使用是dubbo,但因为并发量比较小,同时dubbo相对比较复杂,所有楼主在服务间调用选型时,依然选择了openfeign。同时将服务间调用的接口封装为子工程,进行统一的api管理。避免小伙伴们造重复的轮子。

1.新建api子工程

1.搭建子工程

这里新建了一个子工程,文件结构如下。

image.png

image.png

2.添加pom.xml

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>    
            <version>2.2.6.RELEASE</version>
        </dependency>

3.实现fallback熔断方法

当服务调用失败,会跳转到该类。后文会与Sentinel一起使用。

@Component
public class UserFallBack implements UserApi {
    @Override
    public Result<UserVO> getCurrentUser() {
        Result<UserVO> result = new Result<>();
        String error = "调用system获取当前用户信息失败!";
        result.setCode(506);
        result.setMessage(error);
        return result;
    }
    @Override
    public Result<UserVO> getUser(UserVO UserVO) {
        Result<UserVO> result = new Result<>();
        String error = "调用system获取输入用户信息失败!";
        result.setCode(506);
        result.setMessage(error);
        return result;
    }
}

4.feign接口实现

@FeignClient(name = "system", fallback = UserFallBack.class) //其中name为nacos中的服务名
public interface UserApi {
    /**
     * 获取当前用户信息
     * 
     * @return
     */
    @GetMapping("/getCurrentUser")
    Result<UserVO> getCurrentUser();
    /**
     * 通过实体获取用户信息
     *
     * @return
     */
    @GetMapping("/getUser")
    Result<UserVO> getUser(@SpringQueryMap UserVO UserVO);
}

这里需要注意,如果在get请求时,同时boby中有值,feign会把get转换成post,所以这种情况需要使用@SpringQueryMap注解。

2.父工程调用

1.修改pom.xml

1.在pom文件中引入子工程 ,详细配置可以参考楼主文章:

    <dependencies>
        <dependency>
            <groupId>com.vanpeng</groupId>
            <artifactId>common-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

2.修改启动类

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients("com.common.api")
public class DatacenterApplication {
    public static void main(String[] args) {
        SpringApplication.run(DatacenterApplication.class, args);
    }
}

注意:@EnableFeignClients(“com.common.api”)一定要指定api子工程路径,否则不执行调用。

3.调用

public class DemoController {
    @Autowired
    UserApi userApi;
    @GetMapping("/demo")
    public void demo() {
        Result<RestSysUserVO> xxx = userApi.getCurrentUser();
    }
}


相关文章
|
2月前
|
前端开发 UED
组件化的好处是什么
【8月更文挑战第13天】组件化的好处是什么
51 1
|
5月前
|
编解码 前端开发 JavaScript
响应式网站设计与开发:从适配到优化
随着移动设备的普及和互联网的发展,越来越多的用户选择使用移动设备上网。与此同时,不同屏幕尺寸和分辨率的设备也在增加。如何让网站兼容不同设备和屏幕尺寸,提供用户友好的体验,成为了现代网站设计和开发的重要问题。本文将介绍响应式网站设计的概念和实现方式,并探讨如何进行优化,提高网站的性能和用户体验。
|
小程序 开发者
小程序组件化开发
随着小程序的普及,越来越多的开发者开始使用小程序进行开发,而小程序的组件化开发已经成为了一种标配的开发模式。本文将深入介绍小程序组件化开发的相关知识,包括组件的定义、生命周期、通信和使用等方面,帮助大家更好地理解和使用小程序的组件化开发模式。组件是小程序中的一个重要概念,它能够将页面分解成独立的、可复用的部分,以便于开发和维护,组件可以包含一些特定的功能和样式,同时也能够接受外部的数据和事件。在小程序中,组件是通过Component构造函数来定义的。propertiesdata和methods。
127 0
|
编解码 搜索推荐 前端开发
响应式网站建设怎么做好?做好响应式网站的方法
响应式网站建设较传统网站建设有较大的差别,很多没有做过的企业对响应式网站建设并不了解,那响应式网站建设该怎么做呢?做好响应式网站的方法又有哪些?接下来小编将进行逐一分解,帮助您建好响应式网站,一起来看看吧。
113 0
响应式网站建设怎么做好?做好响应式网站的方法
|
搜索推荐 数据挖掘 UED
响应式网站建设有什么特点?响应式网站有什么优点
响应式网站建设会根据不同手机、电脑、平板的不同尺寸进行识别自动调整结构布局,给访客以最佳的用户体验,响应式网站制作的页面还可以使用到微信平台,真正实现了一站多用。除此之外,响应式网站建设还有其他特点,接下来和小编一起来看看吧。
164 0
响应式网站建设有什么特点?响应式网站有什么优点
|
编解码 前端开发 UED
什么是响应式网站?响应式网站建设解决方案
响应式网站完全采用全网3合1建站方式,实现一个后台多种终端兼容展示,所有访问终端统一访问地址,响应式网站建设的解决方案对于多终端的兼容展示是重点,接下来小编为你详细分享什么是响应式网站建设以及实用的解决方案,一起来看看吧。
172 0
什么是响应式网站?响应式网站建设解决方案
|
编解码 前端开发 JavaScript
响应式网站建设有哪些技巧?建响应式网站需要注意什么
在进行响应式网站建设的时候,很多企业不知道怎么做,也常常会遇到一些小问题不知道怎么结局,其实响应式网站建设还是有规律可循的,接下来小编为你分享响应式网站建设的技巧及注意事项,一起来看看吧。
245 0
响应式网站建设有哪些技巧?建响应式网站需要注意什么
|
域名解析 移动开发 运维
响应式网站建设从何做起?响应式网站建设的具体流程
响应式网站建设是目前主流的建站方式,如果企业选择制作响应式网站,那么就必须了解响应式网站是怎么做的,这样才能更好的完成建站目标,但很多企业对响应式网站的建设并不了解,接下来小编会告诉你响应式网站建设从何做起以及有哪些流程,一起看看吧。
244 0
响应式网站建设从何做起?响应式网站建设的具体流程
|
前端开发 程序员
组件化开发的优势
随着前后端分离架构成为主流,越来越多的业务逻辑被推向前端,再加上用户对于体验的更高要求,前端的复杂性在一步一步地拔高。对前端复杂性的管理就显得越来越重要。
组件化开发的优势
|
小程序 JavaScript 数据挖掘
【微信小程序】协同工作和发布 数据绑定
🍘协同工作和发布 - 小程序成员管理 1. 成员管理的两个方面 2. 不同项目成员对应的权限 3. 开发者的权限说明 4. 添加项目成员和体验成员 🍍协同工作和发布 - 小程序的版本 1. 软件开发过程中的不同版本 2. 小程序的版本 🍓协同工作和发布 - 发布上线 1. 小程序发布上线的整体步骤 2. 上传代码 3. 在后台查看上传之后的版本 4. 提交审核 5. 发布 6. 基于小程序码进行推广 🍇协同工作和发布 - 运营数据 1. 查看小程序运营数据的两种方式 🍒WXML 模板语法 - 数据绑定 1. 数据绑定的基本原则
【微信小程序】协同工作和发布 数据绑定