模仿mybatis-plus实现rpc调用

 更新时间:2023年02月14日 11:16:23   作者:雨夜之寂  
这篇文章主要为大家介绍了模仿mybatis-plus实现rpc调用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

首先我的目标就是 为了把rpc调用进行封装,让业务人员开发的时候 快速使用

组件的整合

pom.xml 整合

<dependency>
    <groupId>com.yuye</groupId>
    <artifactId>yuye-metadata-spring-boot-starter</artifactId>
</dependency>

假设你的业务package 名为 com.yuye.biz.xxx

新建一个package 比如com.yuye.biz.xxx.metadata.mapper 新建一个TestMetadata.java 接口

@MetadataModel("model01")
public interface TestMetadataMapper {
    String test();
}

Application 启动类上加

@MetadataModelScan(basePackage = {"com.example.metadata.mapper"})

你需要在MetadataMapperMethod 类中 添加自己的逻辑

优化点

  • 可以把所有 接口的动态代理都使用这个组件
  • 支持插件化扩展MetadataMapperMethod 的逻辑

场景:

1 我需要 在有mybatis的 同时,我要模仿 BaseMapper 接口这种动态代理 底层进行rpc调用

额外考虑:

  •  mybatis 和 mybatis-plus 共存的情况,会出现 多次动态代理的情况,怎么保证正确性
  •  发现 拿Object 接动态代理之后的对象可以,用接口接 就不行
  •  对必要的东西 进行cache

背景:

让以后其他接口 可以自由的实现自定义动态代理逻辑,

比如现在有mapper 代理 和 metadata代理,之后再来一个 xxx功能,可以快速整合

步骤:

1 组件放到 一个springboot项目(无mybatis 和 mybatis-plus)

测试通过

2 springboot项目 添加mybatis 进行重新测试

测试通过

3 springboot项目 去掉mybatis 添加 mybatis-plus 进行重新测试

因为 mybatis 和mybatis-plus 有冲突,一般项目都是用其中一个

测试通过

上面这三步是因为公司项目中不敢保证都是用 mybatis 或者 mybatis-plus,有可能根据项目不同,选择不同的组件,所以我们2个都要兼容

测试@MapperScan 和 @MetadataModelScan 是否有冲突

总共分几种情况:

1 各自管各自的

@MetadataModelScan(basePackage = {"com.example.metadata.mapper"})
@MapperScan({"com.example.dao"})

2 @MapperScan 范围包含@MEtada

@MetadataModelScan(basePackage = {"com.example.metadata.mapper"})
@MapperScan({"com.example"})

报错

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

是因为 mapper和 metadata 都扫描到了 这个接口,多次动态代理,而且我们用的是 @

@Autowired

解决办法:

1 把package 分开

2 添加@MapperScan的拦截 过滤掉 @MetadataModel ,让mybatis 不扫描使用

@MetadataModel 的接口

3 @MetadataModelScan 大于 @MapperScan

@MetadataModelScan(basePackage = {"com.example"})
@MapperScan({"com.example.dao"})

测试通过

代码地址 github.com/a25017012/y…

以上就是模仿mybatis-plus实现rpc调用的详细内容,更多关于模仿mybatis-plus rpc调用的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Springboot一个注解搞定数据字典的实践方案

    基于Springboot一个注解搞定数据字典的实践方案

    这篇文章主要介绍了基于Springboot一个注解搞定数据字典问题,大致的方向是自定义注解,在序列化的时候进行数据处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Spring整合Junit详解

    Spring整合Junit详解

    Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit
    2022-07-07
  • java基于Des对称加密算法实现的加密与解密功能详解

    java基于Des对称加密算法实现的加密与解密功能详解

    这篇文章主要介绍了java基于Des对称加密算法实现的加密与解密功能,结合实例形式详细分析了Des加密算法的功能、原理、使用方法与相关注意事项,需要的朋友可以参考下
    2017-01-01
  • Java的Cglib动态代理实现方式详解

    Java的Cglib动态代理实现方式详解

    这篇文章主要介绍了Java的Cglib动态代理实现方式详解,CGLIB是强大的、高性能的代码生成库,被广泛应用于AOP框架,它底层使用ASM来操作字节码生成新的类,为对象引入间接级别,以控制对象的访问,需要的朋友可以参考下
    2023-11-11
  • 高并发系统的限流详解及实现

    高并发系统的限流详解及实现

    这篇文章主要介绍了高并发系统的限流详解及实现,内容详细,小编觉得很不错,这里分享给大家,供需要的朋友参考。随小编一起看看吧。
    2017-11-11
  • java使用xpath解析xml示例分享

    java使用xpath解析xml示例分享

    XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,下面是一小示例,需要的朋友可以参考下
    2014-03-03
  • Maven+SSM框架实现简单的增删改查

    Maven+SSM框架实现简单的增删改查

    这篇文章主要介绍了Maven+SSM框架实现简单的增删改查,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 解决idea使用过程中让你觉得不爽的一些问题(小结)

    解决idea使用过程中让你觉得不爽的一些问题(小结)

    这篇文章主要介绍了解决idea使用过程中让你觉得不爽的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java实现播放背景音乐

    java实现播放背景音乐

    这篇文章主要为大家详细介绍了java实现播放背景音乐,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架

    SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架

    SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架,讨论两种搭建方式:基于frameset和基于easyUI,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论