一、前言

  1、开发工具及系统环境

    •   IDE:IntelliJ IDEA 2020.2.2
    •   系统环境:Windows

  2、项目目录结构

    •   biz层:业务逻辑层

    •   dao层:数据持久层

    •   web层:请求处理层

二、搭建步骤

  1、创建父工程

                  

         选择Spring Initializr,Initializr默认选择Default,点击Next

         

    点击Next

    这一步不需要选择直接Next

    

    点击Finish创建项目

    最终得到的项目目录结构如下,删除无用的.mvn目录、src目录、mvnw及mvnw.cmd文件,最终只留.gitignore和pom.xml

  2、创建子模块

    选择项目根目录shop右键呼出菜单,选择New -> Module

    

    选择Maven,点击Next

    

    填写ArifactId,Module name增加横杠提升可读性,点击Finish

    

    同理添加shop-dao、shop-web子模块,最终得到项目目录结构如下图

    

  3、运行项目

    在shop-web层创建com.dasheng.shop.web包(注意:这是多层目录结构并非单个目录名,com >> dasheng >> shop>> web)并添加入口类ShopWebApplication.java

@SpringBootApplication
public class ShopWebApplition {
public static void main(String[] args) {
SpringApplication.run(ShopWebApplition.class, args);
}
}

    在com.dasheng.shop.web包中新建controller文件目录并新建一个controller,添加test方法测试接口是否可以正常访问

@RestController
@RequestMapping("demo")
public class Controller { @GetMapping("test")
public String test() {
return "Hello World!";
}
}

    运行ShopWebApplication类中的main方法启动项目,默认端口为8080

    

   访问http://localhost:8080/demo/test得到如下效果

    以上虽然项目能正常启动,但是模块间的依赖关系却还未添加,下面继续完善。

  4、配置模块间的依赖关系

    各个子模块的依赖关系:

      biz层依赖dao层,

      web层依赖biz层

      父pom文件中声明所有子模块依赖(dependencyManagement及dependencies的区别自行查阅文档)

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.dasheng.shop</groupId>
<artifactId>shop-biz</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dasheng.shop</groupId>
<artifactId>shop-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.dasheng.shop</groupId>
<artifactId>shop-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>

    在shop-web层中的pom文件中添加shop-biz依赖

<dependencies>
<dependency>
<groupId>com.dasheng.shop</groupId>
<artifactId>shop-biz</artifactId>
</dependency>
</dependencies>

    在shop-biz层中的pom文件中添加shop-dao依赖

<dependencies>
<dependency>
<groupId>com.dasheng.shop</groupId>
<artifactId>shop-dao</artifactId>
</dependency>
</dependencies>

  5. web层调用biz层接口测试

    在shop-biz层创建com.dasheng.shop.biz包,添加service目录并在其中创建DemoService接口类

public interface DemoService {
String test();
}
@Service("DemoService")
public class DemoServiceImpl implements DemoService { @Override
public String test() {
return null;
}
}

    com.dasheng.biz.web.controllerController通过@Autowired注解注入DemoService,修改DemoController的test方法使之调用DemoService的test方法,最终如下所示:    

@Autowired
private DemoService demoService;
@GetMapping("test2")
public String test2() {
return demoService.test();
}

    再次运行ShopWebApplication类中的main方法启动项目,发现如下报错

***************************
APPLICATION FAILED TO START
*************************** Description: Field demoService in com.dasheng.biz.web.controller.Controller required a bean of type 'com.dasheng.biz.service.DemoService' that could not be found. The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'com.dasheng.biz.service.DemoService' in your configuration. Process finished with exit code 1

  原因是找不到DemoService类,此时需要在ShopWebApplication入口类中增加包扫描,设置@SpringBootApplication注解中的scanBasePackages值为com.dasheng.shop,最终如下所示

     

  shop-web的pom加入

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.27</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>

applicatio.yml配置 新建applicatio.yml配置文件:https://blog.csdn.net/weixin_44848573/article/details/106445457

spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://localhost:3306/test01?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
@SpringBootApplication(scanBasePackages = "com.dasheng.biz")
@MapperScan("com.dasheng.biz.dao")
public class ShopWebApplition {
public static void main(String[] args) {
SpringApplication.run(ShopWebApplition.class, args);
}
}

完成!!

业务层直接调用(@Autowired)dao层(Mybatis)就完事了这不在叙述了,因为没有到入实体,项目放到gitee了,有需要的同学可以下载哦!

https://gitee.com/diaoyulin/shop.git

Spring Boot + MyBatis 多模块项目搭建教程的更多相关文章

  1. SpringBoot+Mybatis多模块项目搭建教程

    一.前言 框架为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:IntelliJ IDEA 2018.2 系 ...

  2. Spring Boot + JPA 多模块项目无法注入 JpaRepository 接口

    问题描述 Spring Boot + JPA 多模块项目,启动报异常: nested exception is org.springframework.beans.factory.NoSuchBean ...

  3. Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建

    之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...

  4. spring boot:构建多模块项目(spring boot 2.3.1)

    一,为什么要使用多模块? 1,结构更清晰,方便管理    如果只是一个小项目当然没有问题,    但如果功能越增越多则管理越来越复杂,    多模块可以使项目中模块间的结构分离   2,把项目划分成多 ...

  5. 在Idea创建Spring Boot + MyBatis的web项目

    创建步骤如下 选择Spring initializr  2. 修改group 与 atifact id,点击next 3. dependencies里面选择Web->Web , SQL -> ...

  6. Spring Boot 项目实战(一)Maven 多模块项目搭建

    一.前言 最近公司项目准备开始重构,框架选定为 Spring Boot ,本篇主要记录了在 IDEA 中搭建 Spring Boot Maven 多模块项目的过程. 二.软件及硬件环境 macOS S ...

  7. Spring boot Mybatis整合构建Rest服务(超细版)

     Springboot+ Mybatis+MySql整合构建Rest服务(涵盖增.删.改.查) 1.概要 1.1 为什么要使用Spring  boot? 1.1.1 简单方便.配置少.整合了大多数框架 ...

  8. SpringBoot+Mybatis多模块(module)项目搭建教程

    一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:Intelli ...

  9. spring boot+mybatis+quartz项目的搭建完整版

    1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...

随机推荐

  1. disruptor笔记之八:知识点补充(终篇)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. webRTC中语音降噪模块ANS细节详解(一)

    ANS(adaptive noise suppression) 是webRTC中音频相关的核心模块之一,为众多公司所使用.从2015年开始,我在几个产品中使用了webRTC的3A(AEC/ANS/AG ...

  3. 记一次 .NET 某招聘网后端服务 内存暴涨分析

    一:背景 1. 讲故事 前段时间有位朋友wx找到我,说他的程序存在内存阶段性暴涨,寻求如何解决,和朋友沟通下来,他的内存平时大概是5G 左右,在某些时点附近会暴涨到 10G+, 画个图大概就是这样. ...

  4. linux 信号与处理

    一.linux信号是什么 基本概念 信号是事件发生时对进程的通知机制,也就是所谓的软件中断.信号和硬件的中断类似,是软件层对中断机制的模拟,在多数情况下是无法预测信号产生的时间,所以软件层提供了一种处 ...

  5. pip 命令总结

    建议和 Conda 命令一起看,pip 和conda命令有点相似.<Conda 命令> 1 查看帮助文档 pip --help 使用该命令将告诉你 pip 的常用命令. 使用时,输入pip ...

  6. Markdown数学公式

    1. 显示位置与大小 正文(inline)中的LaTeX公式用$...$定义, 显示在当前行内. $\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$ \(\sum_{i ...

  7. C#并行编程:Parallel的使用

    前言:在C#的System.Threading.Tasks 命名空间中有一个静态的并行类:Parallel,封装了Task的使用,对于执行大量任务提供了非常简便的操作.下面对他的使用进行介绍. 本篇内 ...

  8. Flask 易错点

    1.With上下文管理器 常用: with open("file_name","wb") as f: f.write("hello flask&quo ...

  9. 对epoll机制的学习理解v1

    epoll机制 wrk用非阻塞多路复用IO技术创造出大量的连接,从而达到很好的压力测试效果.epoll就是实现IO多路复用的关键. 本节是对epoll的本质的学习总结,进一步的参考资料为: <深 ...

  10. 2021 从零开始学Git【新版本Git - 8000字详细介绍】

    我写的这篇文章,主要是记录自己的学习过程,也希望帮助读者少踩坑(比如不同版本可能命令不兼容等).本文面向git零基础初学者,建议读者按照文中命令自己全部操作一遍(注意运行环境). 我的运行环境:win ...