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

事业网站网站建设方案广西贵港建设集团有限公司网站

事业网站网站建设方案,广西贵港建设集团有限公司网站,aws网站建设,阿里云建网站步骤背景 这段时间在公司接手了一个新项目,看到一段代码非常奇怪的,研究了好久。内容大概是这样 public void getUser (int id) {userService.getById(id); }当我点击这个方法进去的时候,我发现这个UserService类居然是导入jar包的一个接口&…

背景

这段时间在公司接手了一个新项目,看到一段代码非常奇怪的,研究了好久。内容大概是这样

public void getUser (int id) {userService.getById(id);
}

当我点击这个方法进去的时候,我发现这个UserService类居然是导入jar包的一个接口,而且没有实现类。反编译过来的代码大概是这样

public Interface UserService {User getById(int id);
}

没有实现类,也没有类似于feign这种远程调用。我思考了很久,到底是怎样可以做到只用接口就实现功能了,首先想到的是mybatis的mapper类型接口,但是这种人家有@Mapper注解,能用切面之类的。如果是rpc或者微服务,怎么会没有远程调用地址?根据我使用过的框架feign、dubbo、restTemplate哪个没有远程调用地址?莫非是为了代码的保密性,将接口和实现类分开打Jar包了?摸索了半天,什么都没发现。
后来我看到一个很奇怪的名词:Hessian,百度了解之后,得知这玩意就是rpc框架。。。而且使用的方式有很大不一样,就学习了一下。所谓的只有接口没有实现类和feign调用的那种方式差不多,由服务提供者来提供一个jar包,里面全是接口和一些vo类。

Hessian入门学习

Hessian协议是一种轻量级的RPC协议,可以用于高效地实现跨语言的服务调用。在本文中,我们将介绍如何使用Spring Boot实现基于Hessian协议的RPC服务。

1. 添加Hessian依赖

在开始之前,我们需要在Spring Boot项目中添加Hessian依赖。可以在pom.xml文件中添加以下依赖:

<dependency><groupId>com.caucho</groupId><artifactId>hessian</artifactId><version>4.0.38</version>
</dependency>

2. 创建RPC接口

创建一个接口,包含需要远程调用的方法。例如,创建一个名为UserService的接口,包含getUserById()方法:

public interface UserService {User getUserById(int userId);
}

3. 实现RPC接口

创建一个UserService的实现类,并在其中实现getUserById()方法。例如:

@Service
public class UserServiceImpl implements UserService {@Overridepublic User getUserById(int userId) {// 实现获取用户信息的逻辑return userDao.getUserById(userId);}
}

4. 配置Hessian服务端

在Spring Boot应用程序的配置类中,使用HessianServiceExporter将UserService实现类暴露为Hessian服务端。例如:

@Configuration
public class HessianConfig {@Autowiredprivate UserService userService;@Bean(name = "/userService")public HessianServiceExporter hessianServiceExporter() {HessianServiceExporter exporter = new HessianServiceExporter();exporter.setService(userService);exporter.setServiceInterface(UserService.class);return exporter;}
}

在上面的配置中,使用@Bean注解将HessianServiceExporter实例化为Spring Bean,并使用/setService()和/setServiceInterface()方法将UserService实现类暴露为Hessian服务端。

5. 测试Hessian服务端

启动Spring Boot应用程序,并访问http://localhost:8080/userService。如果一切正常,应该会看到Hessian服务端的欢迎信息。

6. 创建RPC客户端

创建一个名为UserServiceClient的接口,并在其中定义远程调用getUserById()方法。例如:

public interface UserServiceClient {User getUserById(int userId);
}

7. 配置Hessian客户端

在Spring Boot应用程序的配置类中,创建一个HessianProxyFactoryBean实例,并使用/setServiceUrl()和/setServiceInterface()方法将UserServiceClient接口绑定到Hessian服务端。例如:

@Configuration
public class HessianConfig {// 配置Hessian服务端@Autowiredprivate UserService userService;@Bean(name = "/userService")public HessianServiceExporter hessianServiceExporter() {HessianServiceExporter exporter = new HessianServiceExporter();exporter.setService(userService);exporter.setServiceInterface(UserService.class);return exporter;}// 配置Hessian客户端@Beanpublic HessianProxyFactoryBean userServiceClient() {HessianProxyFactoryBean factory = new HessianProxyFactoryBean();factory.setServiceUrl("http://localhost:8080/userService");factory.setServiceInterface(UserServiceClient.class);return factory;}
}

在上面的配置中,使用@Bean注解将HessianProxyFactoryBean实例化为Spring Bean,并使用/setServiceUrl()和/setServiceInterface()方法将UserServiceClient接口绑定到Hessian服务端。

8. 测试Hessian客户端

在需要调用UserService的代码中,使用@Autowired注解将UserServiceClient实例化为Spring Bean。例如:

@Service
public class UserServiceCaller {@Autowiredprivate UserServiceClient userServiceClient;public User getUserById(int userId) {return userServiceClient.getUserById(userId);}
}

在上面的代码中,使用@Autowired注解将UserServiceClient实例化为Spring Bean,并调用getUserById()方法以远程调用Hessian服务端。

9. 完成

现在已经成功地使用Spring Boot实现了基于Hessian协议的RPC服务和客户端。你可以在应用程序中使用这些服务和客户端来实现远程过程调用,从而使应用程序更加灵活和高效。

http://www.15wanjia.com/news/190920.html

相关文章:

  • 南昌营销网站建设公司制作个网站
  • 京津冀协同发展9周年百度seo排名优化是什么
  • 合肥建筑网站永久二级域名分发平台
  • 经营范围网站开发运营小型企业网站有哪些
  • 网站集群建设是网站用什么域名
  • 公司网站是不是每天要更新wordpress游戏插件
  • 黑马网站建设网站设计企业门户模板
  • 政务信息网站建设工作方案wordpress修改生效
  • 卧龙区网站建设哪家好一分钟做网站
  • 购物商城网站模板支持wordpress主机
  • cp网站开发是什么做网站 会计分录
  • 网站想换个风格怎么做室内设计培训网课
  • 支付集成文件放在网站哪里网站未备案或已封禁
  • 企业软件网站建设专业做网站流程
  • 怎么制作网站游戏wordpress主题 付费
  • 网站如何做备份深圳市网络品牌推广
  • 论坛式网站建设做微信平台网站
  • 电商网站开发公司哪家好管理咨询营销的客户关系如何维护
  • p2p金融网站开发方案郑州租赁房网站建设
  • 阜平网站seo多功能创意产品设计
  • 知名企业网站例子赣州网站seo
  • 主机做网站服务器怎么设置书店网站建设的设计报告
  • 网站引导页分为三个板块设计风格在上海做兼职去哪个网站搜索
  • 智慧团建信息系统网站登录设计网站的结构时
  • 浙江企业响应式网站建设设计电子商务网站建设工具都有那些
  • 广州网站推广团队东莞市品牌网站建设
  • 湖州网站建设公司哪家好单页面网站制作视频
  • 做网站需要交税做网站的电脑配置
  • 浏览器怎么打开网站服务器连接wordpress搭建网盘
  • 定制型网站 成功案例以美食为主题的网页设计