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
为方便读者看到效果,笔者也简单的编写了一个示例项目,可以下载下来试试。如果源码对你有一丁点的帮助,希望点个小星星支持一下哦。
六、总结希望读者能够真正动手去试一试,只有实践了才能知道里面的运作逻辑。笔者也是花了两个星期才把代码跟文章整理好,并不是因为这个东西难,而是因为没时间,苦逼的程序
早上七点起床,晚上10点左右回家,确实没啥时间搞这些,哈哈哈。如果文章对你有帮助,希望多多支持。原文地址:https://leisure.wang/procedural-framework/framework/704.html