SpringBoot 项目多模块拆分的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Geekerstar
V2EX    Java

SpringBoot 项目多模块拆分的问题

  •  
  •   Geekerstar 2020-02-14 17:53:59 +08:00 8653 次点击
    这是一个创建于 2070 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个项目,是个单体项目,不是微服务项目,我想将它按照业务进行多模块拆分,比如有 A,B,C 三个独立业务,每个业务都有自己的 Controller,Service,Mapper,可否将其拆分为三个 Module,但是只有一个启动类呢?有没有比较好的方案呢?我看网上拆分都是按照 MVC 层拆分而不是按照业务拆分?

    19 条回复    2020-03-13 20:39:07 +08:00
    Jacky23333
        1
    Jacky23333  
       2020-02-14 18:16:40 +08:00 via Android
    放进不同的包里
    fantastM
        2
    fantastM  
       2020-02-14 18:21:29 +08:00
    用 maven 内置的 module 就可以吧
    huntcool001
        3
    huntcool001  
       2020-02-14 18:23:57 +08:00
    Maven 的话,做一个 parent pom, 下面 A B C 三个项目是这个 pom 的 module 和子 pom(继承通用的 pom 配置)
    meantobe
        4
    meantobe  
       2020-02-14 18:55:49 +08:00
    大致思路是再建一个 module,引用 A、B、C 三个 module,通过 profile 控制读取不同的 resource,在 resource 中配置 base-package="a/b/c.controller, a/b/c.service, a/b/c.mapper"
    securityCoding
        5
    securityCoding  
       2020-02-14 19:20:43 +08:00
    就是子模块吧 , 扫父类包路径就行了
    pan176
        6
    pan176  
       2020-02-14 20:15:18 +08:00
    只有一个启动类,拆分的意义何在。。。
    paragon
        7
    paragon  
       2020-02-14 20:25:52 +08:00
    设置好 package scan 的包名就好了啊~
    hantsy
        8
    hantsy  
       2020-02-14 20:27:06 +08:00
    yongliu
        9
    yongliu  
       2020-02-14 20:29:16 +08:00
    一个启动类三个 Module 意义何在?
    看你的描述,一个 Module,三个 Controller/Service/Mapper 就行了,没必要分 Module。
    hantsy
        10
    hantsy  
       2020-02-14 20:47:50 +08:00
    如果你愿意可以尝试 Java 9 Module System,Spring 已经全部 Module 化了。另外从 Spring3.x 起 Spring 官方不支持 OSGI,但是 Spring 创建了另外一个项目 Spring Plugin (这个项目现在似乎不活跃了)。
    Fanatique32
        11
    Fanatique32  
       2020-02-14 21:28:32 +08:00
    这样有点像 angularJs 的 module,说是 module 其实是 name_space。
    CoderGeek
        12
    CoderGeek  
       2020-02-14 22:55:03 +08:00
    做多个子模块 有个模块叫 xxx-web 只放启动类和配置文件 打包 web 模块引用其他模块即可
    w292614191
        13
    w292614191  
       2020-02-15 11:41:02 +08:00
    聚合项目吧,我感觉没什么用,看起来舒服点,其实还是相互调用。打包后还是一个 jar。
    sicauxeon
        14
    sicauxeon  
       2020-02-15 14:01:11 +08:00
    一般我们在代码层面上是拆分成 core、facade、repository、api、common、util 等这几个包,通过 gradle 或者 maven 等工具管理项目的生命周期。不要试图按照业务来拆分代码到多个模块上,你的核心领域模型应该放在一个模块中。
    sicauxeon
        15
    sicauxeon  
       2020-02-15 14:08:33 +08:00
    使用一个启动类完全可以,你启动时把相应的 Java bean 都加载进来即可
    javapythongo
        16
    javapythongo  
       2020-02-15 15:28:34 +08:00 via iPhone
    在一个 module 建立不同的包就行了
    Chengxians
        17
    Chengxians  
       2020-02-15 16:16:50 +08:00
    a b c 创建三个模块。启动类 D 中去把 abc 加成一个链一起启动就可以了
    notwaste
        18
    notwaste  
       2020-02-21 11:11:30 +08:00
    按照业务拆分之后进去不还是 mvc 吗,没明白拆分的意义是
    siweipancc
        19
    siweipancc  
       2020-03-13 20:39:07 +08:00 via iPhone
    拆分之后可以做可查拔的模块啊,我就写了全局错误处理直接返回模型给前端,基本的错误码都有对应的内置错误类型。实际操作中直接抛错就是了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3549 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:18 PVG 12:18 LAX 21:18 JFK 00:18
    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