spring cloud 有必要把所有 api 接口放在一个模块中吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhb1nk
V2EX    Java

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

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

    最近在学习 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     Solana     3173 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 0:31 PVG 12:31 LAX 20:31 JFK 23:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86