Springboot多模块项目搭建


目录
  • 新建项目,作为父模块
  • 创建子模块
  • 各个模块建立关系
    • 父POM配置
    • Entity的POM配置
    • Dao的POM配置
    • Service的POM配置
    • Web的POM配置
  • 代码
  • 验证
  • 注意事项
  • 参考资料

新建项目,作为父模块

删除除pom.xml之外的所有文件

效果如下:

.gitignore和ReadMe.md是可选文件

创建子模块

工程上右键 -> new -> model -> 选择Spring Initializer -> 下一步

依此步骤分别建立 web、service、entity、dao,删除每个模块中无用的文件,只留下pom.xml

删除除web模块外其他模块的Application启动类和resources目录下的application.properties配置文件

各个模块建立关系

父POM配置

1. packaging改为pom
2. 声明子模块
3. properties/denpendencies下的配置都为公共配置
4. build模块是打包用的,这里声明了所有模块都跳过单元测试

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.6
        
    

    
    com.xxx
    myblog
    0.0.1-SNAPSHOT
    myblog
    pom

    
    
        entity
        dao
        service
        web
    

    
        UTF-8
        UTF-8
        1.8
    


    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            
        
    



Entity的POM配置

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    
    
        com.xxx
        myblog
        0.0.1-SNAPSHOT
        
        ../pom.xml
    

    
    com.xxx
    entity
    0.0.1-SNAPSHOT
    entity
    jar

    
        
            org.projectlombok
            lombok
        
    

Dao的POM配置

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0
    
    
        com.xxx
        myblog
        0.0.1-SNAPSHOT
        ../pom.xml
    

    
    com.xxx
    dao
    0.0.1-SNAPSHOT
    dao
    jar

    
    
        
        
            mysql
            mysql-connector-java
            runtime
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

        
        
            com.xxx
            entity
            0.0.1-SNAPSHOT
        
    

Service的POM配置

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0

    
    
        com.xxx
        myblog
        0.0.1-SNAPSHOT
        ../pom.xml
    

    
    com.xxx
    service
    0.0.1-SNAPSHOT
    service
    jar

    
    
        
        
            com.xxx
            dao
            0.0.1-SNAPSHOT
        

        
        
            com.xxx
            entity
            0.0.1-SNAPSHOT
        
    

Web的POM配置

<?xml version="1.0" encoding="UTF-8"?>

    4.0.0

    
    
        com.xxx
        myblog
        0.0.1-SNAPSHOT
        ../pom.xml
    

    
    com.xxx
    web
    0.0.1-SNAPSHOT
    web
    jar

    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            com.xxx
            service
            0.0.1-SNAPSHOT
        

        
        
            com.xxx
            entity
            0.0.1-SNAPSHOT
        

    

    
    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    com.xxx.blog.WebApplication
                
            

        
    

代码

Entity

package com.xxx.blog;

import lombok.Data;

import java.util.Date;

/**
 * @author computer
 */
@Data
public class UmsMenu {
    private int id;

    private String title;

    private int level;

    private Date createTime;

    private int parentId;
}

Mapper

package com.xxx.blog;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author computer
 */
public interface UmsMenuMapper {
    /**
     * 根据ID查找
     * @param id
     * @return
     */
    /*@Select("select * from ums_menu where id = #{id}")
    @Results({
            @Result(property = "createTime",column = "create_time",javaType = Date.class),
            @Result(property = "parentId",column = "parent_id",javaType = int.class)
    })*/
    UmsMenu findById(@Param("id") int id);

    /**
     * 查找所有
     * @return
     */
    /*@Select("select * from ums_menu")
    @Results({
            @Result(property = "createTime",column = "create_time",javaType = Date.class),
            @Result(property = "parentId",column = "parent_id",javaType = int.class)
    })*/
    List findAll();
}

Mapper.xml



    
        
        
        
        
        
    

    

    

Service

package com.xxx.blog;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author computer
 */
@Service
public class WebService {

    @Autowired
    UmsMenuMapper mapper;

    /**
     * 获取所有Menu信息
     * @return
     */
    public List getAllMenu(){
        return mapper.findAll();
    }
}

Controller

package com.xxx.blog.controller;

import com.xxx.blog.WebService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author computer
 */
@RestController
@RequestMapping("/test")
public class WebTest {

    @Autowired
    WebService webService;

    /**
     * 获取所有Menu信息
     * @return
     */
    @RequestMapping(value = "/getAllMenu",produces = "application/json")
    public String getAllMenu(){
        return webService.getAllMenu().toString();
    }
}

验证

效果

注意事项

1.父pom.xml 打包方式,jar要更改为pom,build 需要更改

2.不需要打包的模块pom.xml文件中不要写,全删掉,例如有些工程中的common模块,utils模块,entity模块,service模  块都不需要打包

3.声明父工程时,填写父工程位置../pom.xml

4.关于applicatin.properties配置文件,只需要在启动的模块中配置就可以了,

5.关于打包为什么打包jar包,不打war包,打war包目的是war包可以运行在tomcat下,但是SpringBoot是内置tomcat,如果你打war包,前提是干掉内置的tomcat,然后才能打包,各种麻烦,直接打包可执行jar包,使用java -jar 命令就可以完美的运行起来很方便!
————————————————
版权声明:本文为CSDN博主「凌云冷海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_41885330/article/details/81875395

参考资料

SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程