说明:咱们经过
maven
的父子工程来搭建springboot
的多模块项目**前端
本项目涉及了到了五个模块java
framework-web
模块主要是放置前端的页面等信息,framework-model
放置领域对象,framework-service
业务逻辑类放在这里,framework-mapper
操做数据库的对象放在这里,framework-common
基础公共的类放在这里mysql
以上五个模块的依赖关系以下:web
秉承的是至上而下的依赖关系。spring
具体的项目结构图以下sql
父工程中只包含一个pom.xml
文件,文件内容以下:数据库
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.triumphxx</groupId> <artifactId>framework-root</artifactId> <version>0.0.1-SNAPSHOT</version> <name>framework-root</name> <description>Demo project for Spring Boot</description> <packaging>pom</packaging> <modules> <module>framework-common</module> <module>framework-web</module> <module>framework-model</module> <module>framework-service</module> <module>framework-mapper</module> </modules> <properties> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-model</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-mapper</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-web</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </dependencyManagement> </project>
说明:咱们将全部的模块进行统一的版本信息管理,并将每个模块引入到父
pom.xml
中。apache
framework-web
模块因为本模块是直接由前端进行调用的模块(先后端分离),
或者是直接将前端文件放在这个模块下,咱们须要引入前端模版依赖,
和web
依赖。也须要依赖framework-service
,以下:后端
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-service</artifactId> </dependency>
模块结构以下:
springboot
framework-web
模块主要是和前端交互的接口controller
在这个模块咱们建立一个控制器UserController
framework-service
模块因为本模块是须要依赖framework-mapper
模块。以下:
<dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-mapper</artifactId> </dependency>
模块结构以下:
framework-service
模块主要业务逻辑处理。咱们建立了一个接口UserService
和实现UserServiceImpl
framework-mapper
模块因为本模块是须要依赖数据库相关依赖,和数据表实体。以下:
<dependency> <groupId>com.triumphxx</groupId> <artifactId>framework-model</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!--数据库链接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.20</version>
模块结构以下:
framework-mapper
模块主要操做数据库。咱们建立了一个接口UserMapper
接口,而且实现查询user
表数据。以下:
/** * @author:triumphxx * @Date:2020/5/24 * @Time:5:38 下午 * @微信公众号:北漂码农有话说 * @desc:用户查询 **/ @Mapper public interface UserMapper { @Select("select * from user") List<UserEntity> selectUser(); }
framework-model
模块咱们只加入lombok
以下:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
模块结构以下:
framework-model
模块主要管理咱们的数据表对象。咱们建立UserEntity
/** * @author:triumphxx * @Date:2020/5/24 * @Time:5:36 下午 * @微信公众号:北漂码农有话说 * @desc:用户实体类 **/ @Data public class UserEntity { private String username; private int id; private String password; }
framework-common
模块这个模块主要是一些公共的组件,这边就不详细说了。
以上模块搭建好之后咱们建立数据表
CREATE TABLE `user` ( `id` int(45) NOT NULL, `username` varchar(255) COLLATE utf8_bin DEFAULT NULL, `password` varchar(255) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
插入一条测试数据
在framework-web
模块的配置文件配置数据库的信息
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC username: root password: root type: com.alibaba.druid.pool.DruidDataSource
启动项目并访问接口。
好啦,数据查询到了,项目搭建完成,本次咱们一块儿探究了,利用SpringBoot搭建一个多模块的项目,
这样作的目的是方便项目的管理