SpringBoot3x的服务间调用@HttpExchange

news2024/11/18 0:13:00

        首先,我们之前曾经用过很多服务间调用的方式和方法,今天给大家介绍一款SpringBoot3x版本服务间调用,采用@HttpExchange注解实现,方便快捷,简单易懂。

        创建个SpringBoot3x项目

        设置端口号为8081

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author xiarg
 * @CreateTime 2023/02/01  11:10
 */
@RestController
public class TestController {

    @GetMapping("/server/test")
    public String test(String name) {
        System.out.println(name);
        return "test :  " + name;
    }

}

         另外在创建个SpringBoot3x项目,依赖如下

         端口默认8080,代码结构如下:

         WebConfig如下,可以看到我们创建了一个web客户端,ToDoService代理客户端发送http请求

import com.genius.springboot3web.service.ToDoService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.support.WebClientAdapter;
import org.springframework.web.service.invoker.HttpServiceProxyFactory;

/**
 * @Author xiarg
 * @CreateTime 2023/02/01  14:06
 */
@Configuration
public class WebConfig {

    @Bean
    WebClient webClient() {
        return WebClient.builder()
                .baseUrl("http://localhost:8081")
                .build();
    }
    @Bean
    ToDoService toDoService() {
        HttpServiceProxyFactory httpServiceProxyFactory =
                HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient()))
                        .build();
        return httpServiceProxyFactory.createClient(ToDoService.class);
    }

}

        ToDoService接口

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.service.annotation.GetExchange;
import org.springframework.web.service.annotation.HttpExchange;

/**
 *
 * 服务间调用
 * @Author xiarg
 * @CreateTime 2023/02/01  14:10
 */
@HttpExchange("/server")
public interface ToDoService {
    /**
     * 测试
     * @param name
     * @return
     */
    @GetExchange("/test")
    String test(@RequestParam String name);

}

        测试Controller

/**
 * @Author xiarg
 * @CreateTime 2023/02/01  11:10
 */
@RestController
public class TestController {

    @Autowired
    private ToDoService toDoService;

    @GetMapping("/test")
    public String test(){
        String test = toDoService.test("test1");
        System.out.println(test);
        return "name : "+test;
    }

}

        此时启动两个服务,调用http://localhost:8080/test接口,此时,8080的服务就会去调用8081的服务,返回结果如下:

         这样就调用成功了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开发日记-sublime3安装插件问题

由于notpad作者本人的一些个人错误观念,我对此软件产生极大恶意,所以又拾起了多年不用的sublime。sublime3其实是个非常好用的编辑器,有强大的插件扩展功能,但由于国内网络限制之前放弃了,这次研究明白了如何使用。 Pa…

谷歌公司再出大招,Chrome 新版本发布

导读您在用什么浏览器呢?Chrome 55 Beta 发布了,是不是很期待让我们一起来看看都有哪些方面的技术改进和变化呢?主要内容如下: 1、输入处理改进 随 着移动网络使用的普及,网站对触摸输入做出良好反应的重要性也日益增…

【内网安全】——meterpreter使用攻略

作者名:白昼安全主页面链接: 主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo: 再给我一年,好吗?Metasploit中…

点云的降采样

1. 点云深度学习中的新下采样方法 (CSDN) 现在比较常见的下采样算法有:farthest point sampling(PointNet,ShellNet)、random sampling(RandLA-Net)、grid sampling(KPConv,Grid-GCN)等。它们各有特点: farthest point sampling…

JUC并发编程之LinkedBlockingQueue的底层原理

作者简介:专注于研究Linux内核、Hotspot虚拟机、汇编语言、JDK源码、各大中间件源码等等喜欢的话,可以三连关注~LinkedBlockingQueue介绍在JUC包下关于线程安全的队列实现有很多,那么此篇文章讲解LinkedBlockingQueue的实现原理,相…

LeetCode 刷题系列 -- 1026. 节点与其祖先之间的最大差值

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V |A.val - B.val|,且 A 是 B 的祖先。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的…

The Social Life of Autonomous Cars-自动驾驶汽车与日常生活

目录 自动驾驶汽车与日常生活 Abstract REPURPOSING ONLINE VIDEOS THE SOCIAL ROAD SEEING A GAP AS JUST A GAP SOMETIMES IT’S GOOD TO BE A CREEP THE UNCANNY VALLEY OF AUTONOMOUS CARS References 自动驾驶汽车与日常生活 作者Barry Brown时间06 February 201…

【智慧电力巡检】基于EasyCVR视频技术构建远程监控综合管理平台

一、方案背景电力行业和人民的生活、生产息息相关,一旦电力设施遭遇破坏或工作失误,就会造成大面积停电,其后果不堪设想,尤其是2003年美加“8.14”和2005年莫斯科“5.25”这两起大面积停电事故给我们敲响了警钟。随着电力行业的发…

zookeeper源码分享六 ---- 事物日志

二进制格式设计思想 在二进制格式设计中,其实和json的格式设计类似,也是有套路的。 设计要存储的内容(内容尽可能少,能用数字表示,不用字符串表示)。这些内容的前后顺序,读写都是按照这个顺序来的。 比如&#xff1…

来看看这几个办公技巧吧

技巧一:重复运行命令 当我们需要将一段中的不同单词加粗时,使用替换功能可能不是特别方便。这时可以使用万能的【F4】键进行重复操作。首先选中一个需要加粗的字,点击【加粗】设置完成字体的加粗;然后,选择另一个文本&…

1、python框架selenium

分层的自动化测试 什么样的产品适合做自动化测试? 功能成熟(需求变动较小) 产品更新维护周期长 项目进度不太大 比较频繁的回归测试 软件开发比较规范,具有可测试性 可以脚本具有可复用性 selenium 技术: 元素定位的…

[基础语法] python语法之列表、判断、循环例子

文章目录购物车案例已发布:整体框架打印商品列表将商品加入购物车打印购物车、计算总金额完整代码另外说明购物车案例 已发布: python判断语句python循环语句python之列表list购物车案例后续暂时不更新,有想要的部分,可以后台留…

11、Servlet——综合案例(Servlet+JDBC):管理员登录

目录 1、在MySQL中新建一个servletdatabase数据库,创建表admin 2、在web中创建登录页面login.html 3、在web中创建CSS文件夹,在CSS文件夹中创建login.css 4、在web下新建注册页面register.html 5、在CSS文件夹中新建register.css 6、在CSS文件夹下新…

文件包含漏洞

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 01 文件包含漏洞概述 简单例子 PHP中的文件包含函数 02 文件包含漏洞类型及利用 本地文…

基于MATLAB的车牌识别系统设计

基于MATLAB的车牌识别系统设计 摘要 随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。汽车牌照的自动识别技术已经得到了广泛应…

弱网测试利器-Charles工具实战

一:弱网测试要点 二:利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android) 1、以charles 4.5.6版本为例,打开Proxy->Throttle Settings 2、打开Throttle Settings,界…

实战详细讲解Qt插件plugin的编写与用法

目录 1.Qt的插件是什么?优点是什么? 2.实战项目需求 3. 程序设计分析 4.Qt插件的编写 Q_DECLARE_INTERFACE(类名,标识符) Q_INTERFACES 5.插件的调用 总结感言: 1.Qt的插件是什么?优点是…

let/const相关的内容(一)

1.let/const的基本使用 在ES5中我们声明变量都是使用的var关键字(variable的缩写),从ES6开始新增了两个关键字可以声明变量:let、const。 let和const在其他编程语言中都是有的,所以并不是新鲜的关键字,但是他们确实给JS带来了不一…

动态规划设计LeetCode 300. 最长递增子序列 354. 俄罗斯套娃信封问题

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 300. 最长递增子序列 354. 俄罗斯套娃信封问题,做好准备了么,那么开始吧。 🌲🌲🐴&#x1f434…

【openGauss】把应用开发中的设置客户端字符编码往细了说

前言 早前写过两篇有关Oracle字符集的文章 【ORACLE】谈一谈Oracle数据库使用的字符集,不仅仅是乱码 【ORACLE】谈一谈NVARCHAR2、NCHAR、NCLOB等数据类型和国家字符集 基本说明了 ”数据字符编码“、”客户端字符编码“、”数据库字符编码“三者的关系,这些关系&a…