看了这篇你就会手写RPC框架了 (6)

DefaultRpcProcessor实现了ApplicationListener,并监听了ContextRefreshedEvent事件,其效果就是在Spring启动完毕过后会收到一个事件通知,基于这个机制,就可以在这里开启服务,以及注入服务。因为一切已经准备就绪了,所需要的资源都是OK的。

四、使用RPC框架

框架一个很重要的特性就是要使用简单,使用该框架只需要一个条件和四个步骤即可。

4.1 一个条件

需要准备一个Zookeeper作为注册中心,单节点即可。

4.2 步骤一

引入Maven依赖:

<dependency> <groupId>wang.leisure</groupId> <artifactId>leisure-rpc-spring-boot-starter</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>

不知道如何获得依赖的读者,请在源码下载后,进入项目目录下(pom.xml文件所在位置),执行 mvn install命令,即可在本地仓库生成maven依赖。

4.3 步骤二

在你的项目配置文件(application.properties)中配置注册中心地址,例如:

leisure.rpc.register-address=192.168.199.241:2181 4.4 步骤三

将你的远程服务使用@Service注解,例如:

import wang.leisure.rpc.annotation.Service; @Service public class UserServiceImpl implements UserService { @Override public ApiResult<User> getUser(Long id) { User user = getFromDbOrCache(id); return ApiResult.success(user); } private User getFromDbOrCache(Long id) { return new User(id, "东方雨倾", 1, "https://leisure.wang"); } } 4.5 步骤四

使用注解@InjectService注入远程服务,例如:

@RestController @RequestMapping("/index/") public class IndexController { @InjectService private UserService userService; /** * 获取用户信息 * :8080/index/getUser?id=1 * * @param id 用户id * @return 用户信息 */ @GetMapping("getUser") public ApiResult<User> getUser(Long id) { return userService.getUser(id); } } 五、源码下载

框架源码:leisure-rpc-spring-boot-starter

示例源码:leisure-rpc-example

为方便读者看到效果,笔者也简单的编写了一个示例项目,可以下载下来试试。如果源码对你有一丁点的帮助,希望点个小星星支持一下哦。

六、总结

希望读者能够真正动手去试一试,只有实践了才能知道里面的运作逻辑。笔者也是花了两个星期才把代码跟文章整理好,并不是因为这个东西难,而是因为没时间,苦逼的程序

img

早上七点起床,晚上10点左右回家,确实没啥时间搞这些,哈哈哈。如果文章对你有帮助,希望多多支持。

原文地址:https://leisure.wang/procedural-framework/framework/704.html

end


Java开发乐园

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpygwy.html