SpringBoot搭建多模块项目

项目介绍

SpringBoot Mult Modular 是一个基于SpringBoot构建的一个多模块,可以在此基础上搭建前后台管理系统。根据不同的代码进行分层,可以很好的管理代码和维护,最后附上源代码。

阅读须知

本博文适合于有一定IDEA使用和对SpringBoot有一定了解的人群,大神请绕过。

环境准备

  • IDEA
  • JDK1.8
  • SpringBoot 2.0.3

具体模块

1、在IDEA上新建一个Maven项目。
2、删除src目录,留下pom.xml和*.iml文件即可
3、在父工程项目的基础新建Module,依然是选择Maven项目。
4、具体模块可以参考下图,和查看源码。

该项目主要分为五大模块分别为

  • project-admin 项目后台模块
  • project-front 项目前台模块
  • project-core 项目核心模块
  • project-dao 数据持久层
  • project-service 服务层
    SpringBoot搭建多模块项目_第1张图片
    模块之间依赖关系
    project-admin 依赖于project-serviceproject-core模块。
    project-front 依赖于project-serviceproject-core模块。
    project-service 依赖于 project-dao模块。

加入jar依赖

  • 在父工程项目中整合SpringBoot的依赖管理
    修改父工程 pom.xml文件,新增 springboot parent,代码如下

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.wip.kyriecaogroupId>
    <artifactId>springboot-api-mult-modularartifactId>
    <packaging>pompackaging>
    <version>1.0-SNAPSHOTversion>

    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.3.RELEASEversion>
    parent>

    
    <modules>
        <module>project-frontmodule>
        <module>project-servicemodule>
        <module>project-daomodule>
        <module>project-coremodule>
        <module>project-adminmodule>
    modules>
project>
说明

springboot parent 对构建SpringBoot工程spring系列和一些常用的第三方包进行了管理。我们只需要将其作为parent即可不用指定版本号来引入spring和已经加入管理的第三方包,SpringBoot这么做,也是为了解决每三方包之间的版本冲突问题。

  • project-front工程添加spring依赖

修改project-front/pon.xml,增加 spring web starterproject-coreproject-service工程的依赖。代码如下


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-api-mult-modularartifactId>
        <groupId>com.wip.kyriecaogroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>project-frontartifactId>
    
    <packaging>jarpackaging>

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        
        <dependency>
            <groupId>com.wip.kyriecaogroupId>
            <artifactId>project-coreartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        
        <dependency>
            <groupId>com.wip.kyriecaogroupId>
            <artifactId>project-serviceartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>
    dependencies>
project>
说明

因为这是一个web工程,所以需要增加web starter 的依赖,web starter引入了构建一个web工程的jar包。

  • project-admin工程添加spring依赖,同project-front一样
  • project-service工程添加spring-contextproject-dao工程的依赖包

修改project-service/pom.xml文件,如下


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-api-mult-modularartifactId>
        <groupId>com.wip.kyriecaogroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>project-serviceartifactId>

    <dependencies>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <scope>providedscope>
        dependency>

        
        <dependency>
            <groupId>com.wip.kyriecaogroupId>
            <artifactId>project-daoartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>
        
    dependencies>
project>
说明

这里的spring-context包的scopeprovided,因为这个包在front的springboot web starter中已经被引入了。
我们之所以需要引入这个包,是因为我们需要使用@Service、@Autowired等Spring提供的注解。如果你还需要用到别的第三方包,也可以直接引入。

增加启动类

这里需要新建两个启动类一个是前台一个是后台,分别是 AdminApplication.javaFrontApplication,放在包com.wip.kyriecao下。我们这里新建ControllerIndexAdminControllerIndexFrontApplication放在com.wip.kyriecao.controller中。

  • AdminApplication.java内容如下
/**
 * 后台项目启动类
 * @author KyrieCao
 * @date 2019/1/20 15:23
 */
@SpringBootApplication
public class AdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class);
    }
}
  • FrontApplication.java内容如下
/**
 * 前台项目启动类
 * @author KyrieCao
 * @date 2019/1/20 15:25
 */
@SpringBootApplication
public class FrontApplication {
    public static void main(String[] args) {
        SpringApplication.run(FrontApplication.class);
    }
}
  • IndexAdminController内容如下
/**
 * 后台首页控制器
 * @author KyrieCao
 * @date 2019/1/20 21:33
 */
@RestController
public class IndexAdminController {

    @Autowired
    private IndexService indexService;

    @RequestMapping("/admin")
    public String index() {
        return "Welcome to Admin, Dao名称为:" + indexService.getDaoName();
    }

}
  • IndexFrontController内容如下
/**
 * 前台首页控制器
 * @author KyrieCao
 * @date 2019/1/20 21:35
 */
@RestController
public class IndexFrontController {

    @Autowired
    private IndexService indexService;

    @RequestMapping("/index")
    public String index() {
        return "Welcome to Front, Dao名称为:" + indexService.getDaoName();
    }
}

省略service和dao的代码,就只是返回一个字符串,具体可以查看源码,最后会附上源码。

到这里,SpringBoot的Maven多模块项目搭建完了。启动分别运行AdminApplication.javaFrontApplication.java的main方法即可。
SpringBoot搭建多模块项目_第2张图片

这里说一下project-core这个模块主要是封装一些这个项目核心通用的东西,根据实际情况写。

参考:https://blog.csdn.net/u012627861/article/details/83030914

总结

  • 搭建一个Maven多模块工程
  • parent中引入springboot parent 来继承springboot的包管理
  • web工程中引入springboot提供的web starter
  • 在非web工程引入自己需要的包,如果包已经在front中引入,那么修饰scope为provided。

项目源码:https://github.com/caozongpeng/spring-boot-mult-modular

================================================================================
感谢阅读,写得不好的地方请指教,能帮助到你是对我最好的回报,不卑不亢,加油。
请你记住比你优秀的一定比你努力,比你努力的人一定比你优秀。
================================================================================

你可能感兴趣的:(SpringBoot)