怎么获取 service 方法中调用的所有 mapper 方法?

2021-04-23 06:53:35 +08:00
 JasonLaw
我使用的是 Spring Boot 和 MyBatis,当我调用 service 方法之前,我想知道这个 service 方法将调用的所有 mapper 方法。请问可以做到吗?可以的话,怎么做呢?
1354 次点击
所在节点    编程
6 条回复
nutting
2021-04-23 08:01:31 +08:00
反射,判断类型?
MoHen9
2021-04-23 08:25:55 +08:00
具体有什么场景的需求不如说一下,调用 service 的方法之前获取 mapper 的方法,这种奇怪的做法真的很不合逻辑,因为 mapper 是接口,实例是动态代理生成的,你拿到了也操作不了什么。

如果你想读写分离,动态切换数据源,网上教程一堆,自己搜。
如果你想对 SQL 操作,mybatis 有拦截器。
JasonLaw
2021-04-23 08:52:17 +08:00
@MoHen9 #2 没错,我想实现读写分离,产生一个动态的 data source 。我看了很多网上的资料,基本都是要使用注解的,我不想这么做,所以才会有此问题。
JasonLaw
2021-04-23 11:42:52 +08:00
@MoHen9 #2 或者你有什么好的建议吗?
MoHen9
2021-04-23 11:43:23 +08:00
@JasonLaw 网上大部分的实现都是 aop,使用注解是为了方便控制,并不是所有的 service 都需要,对于需要的加个注解也很简单。

其实你可以只对 com.xxx..service 包下的做限制,自己写个 aop @Around 处理一下就可以。
JasonLaw
2021-04-23 13:18:16 +08:00
@MoHen9 #5 我前面没有表达出我不想使用注解的原因。我不想使用的原因是“对代码的侵入性太强了,而且很容易因为遗漏而出现问题”。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772599

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX