V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JasonLaw
V2EX  ›  编程

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

  •  
  •   JasonLaw · 2021-04-23 06:53:35 +08:00 via iPhone · 1362 次点击
    这是一个创建于 1311 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我使用的是 Spring Boot 和 MyBatis,当我调用 service 方法之前,我想知道这个 service 方法将调用的所有 mapper 方法。请问可以做到吗?可以的话,怎么做呢?
    第 1 条附言  ·  2021-04-23 08:30:47 +08:00
    6 条回复    2021-04-23 13:18:16 +08:00
    nutting
        1
    nutting  
       2021-04-23 08:01:31 +08:00 via Android
    反射,判断类型?
    MoHen9
        2
    MoHen9  
       2021-04-23 08:25:55 +08:00 via Android
    具体有什么场景的需求不如说一下,调用 service 的方法之前获取 mapper 的方法,这种奇怪的做法真的很不合逻辑,因为 mapper 是接口,实例是动态代理生成的,你拿到了也操作不了什么。

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

    其实你可以只对 com.xxx..service 包下的做限制,自己写个 aop @Around 处理一下就可以。
    JasonLaw
        6
    JasonLaw  
    OP
       2021-04-23 13:18:16 +08:00 via iPhone
    @MoHen9 #5 我前面没有表达出我不想使用注解的原因。我不想使用的原因是“对代码的侵入性太强了,而且很容易因为遗漏而出现问题”。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.