Python 官方文档:入门教程 => 点击学习
目录正文组件的整合优化点场景:背景:步骤:正文 首先我的目标就是 为了把rpc调用进行封装,让业务人员开发的时候 快速使用 组件的整合 pom.xml 整合 <depende
首先我的目标就是 为了把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 类中 添加自己的逻辑
1 我需要 在有mybatis的 同时,我要模仿 BaseMapper 接口这种动态代理 底层进行rpc调用
额外考虑:
让以后其他接口 可以自由的实现自定义动态代理逻辑,
比如现在有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调用的资料请关注编程网其它相关文章!
--结束END--
本文标题: 模仿mybatis-plus实现rpc调用
本文链接: https://lsjlt.com/news/196002.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0