Spring Boot + MyBatis 多模块项目搭建教程
一、前言
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 多模块项目搭建教程的更多相关文章
- SpringBoot+Mybatis多模块项目搭建教程
一.前言 框架为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:IntelliJ IDEA 2018.2 系 ...
- Spring Boot + JPA 多模块项目无法注入 JpaRepository 接口
问题描述 Spring Boot + JPA 多模块项目,启动报异常: nested exception is org.springframework.beans.factory.NoSuchBean ...
- Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建
之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...
- spring boot:构建多模块项目(spring boot 2.3.1)
一,为什么要使用多模块? 1,结构更清晰,方便管理 如果只是一个小项目当然没有问题, 但如果功能越增越多则管理越来越复杂, 多模块可以使项目中模块间的结构分离 2,把项目划分成多 ...
- 在Idea创建Spring Boot + MyBatis的web项目
创建步骤如下 选择Spring initializr 2. 修改group 与 atifact id,点击next 3. dependencies里面选择Web->Web , SQL -> ...
- Spring Boot 项目实战(一)Maven 多模块项目搭建
一.前言 最近公司项目准备开始重构,框架选定为 Spring Boot ,本篇主要记录了在 IDEA 中搭建 Spring Boot Maven 多模块项目的过程. 二.软件及硬件环境 macOS S ...
- Spring boot Mybatis整合构建Rest服务(超细版)
Springboot+ Mybatis+MySql整合构建Rest服务(涵盖增.删.改.查) 1.概要 1.1 为什么要使用Spring boot? 1.1.1 简单方便.配置少.整合了大多数框架 ...
- SpringBoot+Mybatis多模块(module)项目搭建教程
一.前言 最近公司项目准备开始重构,框架选定为SpringBoot+Mybatis,本篇主要记录了在IDEA中搭建SpringBoot多模块项目的过程. 1.开发工具及系统环境 IDE:Intelli ...
- spring boot+mybatis+quartz项目的搭建完整版
1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...
随机推荐
- 阿里 Midway 正式发布 Serverless v1.0,研发提效 50%
Github:https://github.com/midwayjs/midway 开源为了前端和 Node.js 的发展,点 Star! 去年阿里提出 Serverless 架构,并利用其新一代研发 ...
- Spring Boot引入Swagger并对界面进行美化
Swagger是一个接口文档生成工具,在前后端分离的开发中经常会用到,下面就来介绍下Swagger的使用: 引入依赖 <dependency> <groupId>io.spri ...
- Conda 命令
Conda 命令 1 检验当前conda的版本 conda -V 2 conda常用的命令 查看已有的虚拟环境 conda env list 创建虚拟环境和删除虚拟环境 anaconda命令创建pyt ...
- dubbo注册中心占位符无法解析问题
dubbo注册中心占位符无法解析问题 1.背景 最近搞了2个老项目,想把他们融合到一起.这俩项目情况简介如下: 项目一:基于SpringMVC + dubbo,配置读取本地properties文件,少 ...
- Redis 深入
1.缓存更新 一般来说缓存的更新有两种情况: 先删除缓存,再更新数据库. 先更新数据库,再删除缓存. 这两种情况在业界,大家对其都有自己的看法.具体怎么使用还得看各自的取舍.当然肯定会有人问为什么要删 ...
- JavaScript04
分离绑定事件 使用分离方式绑定元素事件可以使用页面元素与JavaScript代码完全分离,有利于代码分工和维护,是目前开发主流,分为两步: 1.获取需要绑定事件的元素 语法:根据id属性值取元素节点 ...
- WEB安全指南
说明:本文是Mozilla Web应用部署文档,对运维或者后端开发团队的部署行为进行指导.该部署安全规范内容充实,对于部署有很大意义.同时也涉及到了许多web前端应用安全的基本知识,如CSP, TOK ...
- Scrum Meeting 0602
零.说明 日期:2021-6-2 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成后端管理 ...
- AIApe问答机器人Scrum Meeting 4.27
Scrum Meeting 3 日期:2021年4月27日 会议主要内容概述:汇报两日工作. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 李明昕 后端 Tas ...
- Linux C 数据结构 ->单向链表
之前看到一篇单向链表的博文,代码也看着很舒服,于是乎记录下来,留给自己~,循序渐进,慢慢 延伸到真正的内核链表~(敢问路在何方?路在脚下~) 1. 简介 链表是Linux 内核中最简单,最普通的数据结 ...