我是靠谱客的博主 舒服铃铛,最近开发中收集的这篇文章主要介绍springboot实现远程服务暴露与调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

pom引用

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>5.0.7</version>
        </dependency>

服务端暴露接口:

1、定义接口

public interface DemoInterface {
    BaseResponse get(QueryDTO dto);
}

2、接口实现类

@Slf4j
@Service
public class DemoInterfaceImpl implements DemoInterface {
      @Override
    public BaseResponse get(QueryDTO dto) {
    	return BaseResponse.success();
    }
}

3、配置服务暴露

@Configuration
public class RemotingConfig {

    @Resource
    private DemoInterface demoInterface;

    @Bean("/demoTest")
    public HttpInvokerServiceExporter elasticUserFacade() {
        HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter();
        exporter.setService(demoInterface);
        exporter.setServiceInterface(DemoInterface.class);
        return exporter;
    }
}

应用端调用:
1、引入相同的接口文件DemoInterface,可以用二方包的形式引入
2、配置远程调用

@Configuration
public class RemotingConfig {

    @Bean
    public HttpInvokerProxyFactoryBean demoInterfaceBean(){
        HttpInvokerProxyFactoryBean factoryBean = new HttpInvokerProxyFactoryBean();
        factoryBean.setServiceUrl( "http://www.test.com/demoTest");
        factoryBean.setServiceInterface(DemoInterface.class);
        factoryBean.setHttpInvokerRequestExecutor(httpComponentsHttpInvokerRequestExecutor());
        return factoryBean;
    }

    @Bean
    public HttpComponentsHttpInvokerRequestExecutor httpComponentsHttpInvokerRequestExecutor(){
        HttpComponentsHttpInvokerRequestExecutor executor = new HttpComponentsHttpInvokerRequestExecutor();
        return executor;
    }
}

3、服务调用

@Service
public class DemoManager {
    @Resource
    private DemoInterface demoInterface;
    
    public void get(String key) {
        demoInterface.get(new QueryDTO(key));
    }
}

注意:使用此种方式进行远程服务暴露,传递的参数如果是对象,需要实现Serializable接口,生成对应的serialVersionUID,因为参数传递的时候是转化成二进制的byte数据,在反序列化的时候需要根据UID确定唯一性,否则会报错

调用原理,时序图参考如下链接:
https://www.jianshu.com/p/6da39c67a586
https://my.oschina.net/u/2518341/blog/1800131

最后

以上就是舒服铃铛为你收集整理的springboot实现远程服务暴露与调用的全部内容,希望文章能够帮你解决springboot实现远程服务暴露与调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部