使用Spring框架实现远程服务暴露与调用
2023-06-13 09:13:33 时间
一、前言
image.png 三、远程服务调用 3.1 简单使用
image.png
Spring框架提供了通过HTTP协议实现远程调用的方式,具体是调用方使用HttpInvokerProxyFactoryBean生成一个代理对象,通过代理对象远程通过http服务调用服务提供方法的服务,服务提供方则通过HttpInvokerServiceExporter在服务端暴漏远程调用接口。
二、远程服务暴露 2.1 简单使用 第一步需要定义需要暴露的服务接口和实现public interface UserServiceBo { String sayHello(String name); String sayHello2(String name); String testPojo(Person person);
public class UserServiceImpl implements UserServiceBo{ @Override public String sayHello(String name) { return name; @Override public String sayHello2(String name) { return name; @Override public String testPojo(Person person) { return JSON.toJSONString(person);第二步创建服务导出HttpInvokerServiceExporter的实例
bean id="userService" /
bean name="useServiceExporter" property name="service" ref="userService" / property name="serviceInterface" value="com.test.UserServiceBo" / /bean第三步 暴露远程服务的URL
bean id="simpleUrlRequestHandler" property name="alwaysUseFullPath" value="true" / property name="urlMap" map entry key="/remote/test/userService" value-ref="useServiceExporter" / /map /property /bean
注意这个bean要配置到dispatcher类的配置文件里面。
2.2 原理image.png 三、远程服务调用 3.1 简单使用
HttpInvokerProxyFactoryBean factoryBean = new HttpInvokerProxyFactoryBean(); factoryBean.setServiceUrl("http://127.0.0.1:7001/test/userService.do"); factoryBean.setServiceInterface(UserServiceBo.class); factoryBean.afterPropertiesSet(); UserServiceBo userService = (UserServiceBo) factoryBean.getObject(); System.out.println(userService.sayHello("jiaduo"));3.2 原理
image.png
Spring框架提供了通过HTTP协议实现远程调用的方式,我们可以通过重写invoker自定义http请求header和body传递一些信息到服务暴露端,比如函数签名,序列化协议等。
通过重写exporter可以进行鉴权操作,比如进行函数签名校验,并可以定制反序列化方式。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/93857.html
aliyun相关文章
- Spring学习笔记(三十)——SpringBoot对象拷贝总结&Mapstruct
- 简单介绍一下spring bean的生命周期_Spring bean的生命周期
- 谷粒商城-Spring Sleuth服务链路追踪
- Spring Cloud 的微服务架构学习及实践(十六)
- Spring Cloud 的微服务架构学习及实践(十九)
- 微服务组件--注册中心Spring Cloud Eureka分析
- Spring Boot + Vue + Shiro 实现前后端分离,写得太好了!
- Spring Boot 3.x微服务升级经历
- Spring Cloud Consul服务注册与发现
- Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
- Spring Boot的数据访问方式(二)
- Spring Cloud Gateway监控配置示例
- Spring Cloud Rest的环境搭建详解【服务提供者和服务消费者】
- Spring Cloud Security OAuth2 中实现混合模式
- Spring Cloud Bus监听服务配置的变化并自动通知其他服务(一)
- Spring Data MongoDB 级联操作详解数据库
- Spring错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.B详解编程语言
- 如何使用drools和Spring整合详解编程语言
- Spring事务传播特性的浅析和事务方法嵌套调用详解编程语言
- 什么是 Spring Boot详解编程语言
- Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏详解编程语言
- spring架构利器:JFinal MySQL Spring(jfinalmysql)