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

spring cloud 有必要把所有 api 接口放在一个模块中吗

  •  
  •   zhb1nk · 2020-12-06 10:13:07 +08:00 · 3226 次点击
    这是一个创建于 1449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习 spring cloud,看到一个视频中老师把所有模块的 controller 写成了接口,都放在了一个叫 api 的模块中,然后在每个业务模块中写接口的具体实现。想问下这样有必要吗,各位在实际的工作中会选择这样做吗?谢谢!

    12 条回复    2020-12-18 19:16:43 +08:00
    xuanbg
        1
    xuanbg  
       2020-12-06 11:04:26 +08:00   ❤️ 2
    不建议这么做。我都是按功能先分 C 端 B 端,然后分大模块,再分小模块把包分好。最后在小模块里面建 xxxController/xxxService/xxxServiceImpl 这么 3 个文件。好处是层次分明,找文件非常方便。而且以后要拆分服务也很方便,整个包复制到新项目后老项目里面删掉就行了,不需要到处找文件。
    waising
        2
    waising  
       2020-12-06 11:19:18 +08:00 via iPhone
    没必要吧。都拆分了没必要在关联一起,内部自由调用就行了
    yelog
        3
    yelog  
       2020-12-06 12:25:49 +08:00
    不同业务的逻辑和 api 写在各自的业务模块,通过 gateway 等组建进行路由即可
    XuHuan1025
        4
    XuHuan1025  
       2020-12-06 13:22:42 +08:00
    知道了 慕课网的课全放在 service-api 接口
    Uchiha0bito
        5
    Uchiha0bito  
       2020-12-06 14:15:35 +08:00
    合理 接口和实现分开 只提供一套接口给调用方
    gangsta
        6
    gangsta  
       2020-12-06 16:22:08 +08:00   ❤️ 1
    视频通常只是为了快速演示而已。几年前在一个现场活动中看到 Spring 官方的团队成员,应该是叫 Josh Long,做 coding 演示的时候为了图快直接把 controller 、java bean 还有 service 写在同一个 class 里面,然后他打字又很快(差不多就是边念英文边打),一顿骚操作现场全部惊呆了...
    young1lin
        7
    young1lin  
       2020-12-07 08:56:29 +08:00
    @gangsta 是这样的,我看他的 Spring Cloud Kafka Stream 的教学视频,全部放在一个类里面,就是为了演示快,一把梭。人家是 Spring 布道师,是 Pivotal 团队的,也是 《 Spring Cloud Native Java 》的作者。
    fanlis
        8
    fanlis  
       2020-12-07 10:03:16 +08:00
    我怀疑人老师是不是写的 OpenFeign 接口
    stramkismet
        9
    stramkismet  
       2020-12-07 14:53:22 +08:00
    我一般喜欢把服务间调用的接口单独写个 api 模块(feign 接口),然后给其他服务进行引用。controller 继承这个 api 模块。
    hyqCrystal
        10
    hyqCrystal  
       2020-12-18 16:34:44 +08:00
    我来整理一下,不知道理解的对不对,参考一下,我也经常看开源项目的结构
    有人说这种业务都拆分了,没必要写在一起,但是其实写在一起是微服务化将 api 抽象方便统计管理 fegin API
    当然,我猜想这个写法的第一个人 思想应该是来源于之前用 Dubbo,后来大家都这样写
    有利有弊吧: 利:好管理接口和 Fegin 接口 弊:微服务解耦开发项目模块的思想又被干回去了
    hyqCrystal
        11
    hyqCrystal  
       2020-12-18 16:37:13 +08:00
    @xuanbg 服务之间的调用 又得写一遍 interface 了 写一起应该是解决这个问题的 另外,api 模块也可以区分 B 端和 C 端
    xuanbg
        12
    xuanbg  
       2020-12-18 19:16:43 +08:00
    服务之间调用为啥又要写一遍,原来接口不好使吗?
    @hyqCrystal
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:48 · PVG 21:48 · LAX 05:48 · JFK 08:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.