spring boot项目多个web模块以及web模块复用问题

秒速五厘米 2023-06-20 10:56 322阅读 0赞

我们想从网上找一个现成开源的后台管理框架,几经比较,选中若依(ruoyi),技术栈与我们当前所用非常接近,MIT许可,相当宽松,完全开源和免费。而且,里面的功能看上去非常棒,赶紧给她投了一票。

我下载的是多模块版本。多模块好处多多,利于分开开发,代码也有一定的隔离性。在应用该框架的过程中,也很自然的想实施这一思想:新增的业务管理模块,应当与原先的模块分开。但这样的话,就会有一个spring boot项目存在多个WEB模块的局面了。多个WEB模块,究竟如何共存?或者说,如何集成在一起?或者说,我新开发的WEB模块,如何才能直接使用框架中现有的成果?

如果是非web模块,这很容易理解,无非就是import罢了,在代码中引用,无非引用它的函数,方法,构造其中的实例,等等。但是WEB呢?有控制器,有模板,有静态文件,如CSS,JS之类,这些怎么引用?

答案是可以引用。方法是在Application里@import web模块.class。

拿本例来说,代码结构:
在这里插入图片描述
其中,ruoyi-admin是ruoyi框架固有的WEB模块。整个框架提供了用户管理,菜单管理,字典、日志等各种功能,那么我们只需添加业务部分的管理功能即可。这部分新增的功能存放在”business”,也是一个web模块。business代码结构:
在这里插入图片描述
可以说这是很典型的spring boot项目结构了。

就在这个新增的模块中,引用框架固有的WEB模块:ruoyi-admin。

1、首先,修改business的pom.xml,添加对ruoyi-admin的引用:

  1. <dependency>
  2. <groupId>com.ruoyi</groupId>
  3. <artifactId>ruoyi-admin</artifactId>
  4. <version>4.1.0</version>
  5. <scope>compile</scope>
  6. </dependency>

2、修改business的启动程序BusinessApplication

  1. /** * 启动程序 * * @author chenqu */
  2. //RuoYiApplication是ruoyi-admin的启动程序
  3. @Import(RuoYiApplication.class)//<!-----------就是这一句了
  4. @SpringBootApplication(exclude= { DataSourceAutoConfiguration.class})
  5. public class BusinessApplication extends SpringBootServletInitializer {
  6. public static void main(String[] args){
  7. SpringApplication.run(BusinessApplication.class, args);
  8. System.out.println("============= 业务管理后台启动成功 =============\n");
  9. }
  10. @Override
  11. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  12. return application.sources(BusinessApplication.class);
  13. }
  14. }

这样子启动BusinessApplication后,就既有固有模块,又有新增模块。启动之后,business的resources与ruoyi-admin的resources合在一起(可见resources真的是被当作资源文件来看待,应该是被编译进jar包的)。所以,business如果需要新增资源文件,应该避免与ruoyi-admin的重名。

这种方式,基本上不改动框架固有代码,只在新增模块里想办法,符合开闭原则,代码又有非常清晰的区隔性,我很满意。

发表评论

表情:
评论列表 (有 0 条评论,322人围观)

还没有评论,来说两句吧...

相关阅读

    相关 web模块(一)

    Java基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运