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

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

  •  
  •   zhb1nk Dec 6, 2020 4039 views
    This topic created in 1984 days ago, the information mentioned may be changed or developed.

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

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