第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > IDEA SpringBoot多模块项目搭建详细过程(转)

IDEA SpringBoot多模块项目搭建详细过程(转)

时间:2020-10-24 04:58:31

相关推荐

IDEA SpringBoot多模块项目搭建详细过程(转)

文章转自/zcf980/article/details/83040029

项目源码:链接: /s/1Gp9cY1Qf51tG9-5gUZsnHQ 提取码: 5izt

CSDN源码下载:/download/zcf980/10719615

1. 项目介绍:

本项目包含一个父工程 demo和 四 个子模块(demo-base, demo-dao, demo-service, demo-web), demo-base 为其他三个模块的公共内容, 四个模块都依赖父模块, demo-dao 依赖 demo-base; demo-service 依赖 demo-dao, 间接依赖 demo-base; demo-web 依赖 demo-service, 间接依赖demo-base和demo-dao

2. 搭建思路:

先创建一个 Spring Initializr工程demo 作为 父工程, 然后在父工程再建四个子Module(demo-base, demo-demo-dao, demo-service), 其实他们就是四个普通的Spring Initializr工程

3.开始搭建

首先,创建一个Spring Initializr项目 和 子Module

!!!!注意: 修改demo 的 pom 文件中的打包方式为 pom

好戏开始:

刚才演示创建成一个SpringBoot 工程, 下面正式开始演示搭建多模块

(1) 第一步, 删除刚才创建工程里的文件, 只保留(.idea文件夹 , 和项目 pom 文件, 以及一个 *.iml 文件)

(2)第二步, 创建子 Module (demo-base, demo-dao, demo-service和 demo-web) 先创建demo-base子工程

创建好了 demo-base 子项目, 为子工程 demo-base 生命父工程以及 为 父工程声明子 Module(在 demo 和 demo-base 的 pom 文件中添加如下代码)

---->在 demo-base 中 声明父工程, 注意:此时demo-base继承的是 SpringBoot提供的父工程, 需要修改<parent></parent>

中的版本信息, 修改成父项目 demo 的版本信息(直接将父项目 demo 的pom文件 中的版本信息复制粘贴到 mode-base中即可)

--- 声明父工程

<parent>

<groupId>demo</groupId>

<artifactId>demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

----声明子 Module

<modules>

<module>demo-base</module>

</modules>

修改后的父工程 demo 的 pom 文件

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

<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<!-- 父项目 demo 的版本信息 -->

<groupId>demo</groupId>

<artifactId>demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>demo</name>

<description>Demo project for Spring Boot</description>

<!-- 继承说明:这里继承SpringBoot提供的父工程 -->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.16.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<!-- 声明子模块 -->

<modules>

<module>demo-base</module>

</modules>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

修改后的 demo-base 的 pom 文件

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

<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<!-- demo-base 的版本信息 -->

<groupId>demo</groupId>

<artifactId>demo-base</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>demo-base</name>

<description>Demo project for Spring Boot</description>

<!-- 声明父项目 -->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.16.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<scope>runtime</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

创建demo-dao, demo-service 创建方法一样, 这里只演示demo-dao的创建

创建demo-web 模块与demo-dao创建除了第4步, 完全相同需要 添加 web依赖, 在创建过程的第4步需要添加 web 依赖

(4) 第三步 保留demo-web的启动类 和 配置文件, 其他项目的启动类都删除, 整个项目只需要一个启动类和一个配置文件

demo-base: /demo/demo-base/src/main/java/demobase/demo/DemoBaseApplication.java 删除

/demo/demo-base/src/main/java/resource/* 删除

demo-dao: /demo/demo-dao/src/main/java/demodao/demo/DemoDaoApplication.java 删除

/demo/demo-dao/src/main/java/resource/* 删除

demo-service: /demo/demo-service/src/main/java/demoservice/demo/DemoServiceApplication.java 删除

/demo/demo-service/src/main/java/resource/* 删除

(5)第四步 在 demo-dao 中添加 demo-base 的依赖信息, 在 demo-service 中添加 demo-dao 的依赖信息,在 demo-web 中添加 demo-service 的依赖信息, 依赖信息添加到 各 pom 文件下的<dependencies> </dependencies>节点下

添加依赖信息后的 demo-dao 的依赖信息

<dependencies>

<!-- 添加 demo-base 的依赖 -->

<dependency>

<groupId>demo</groupId>

<artifactId>demo-base</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

添加依赖信息后的 demo-service 的依赖信息

<dependencies>

<!-- 添加 demo-dao 的依赖 -->

<dependency>

<groupId>demo</groupId>

<artifactId>demo-dao</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

添加依赖信息后的 demo-web 的依赖信息

<dependencies>

<!-- 添加 demo-service 的依赖 -->

<dependency>

<groupId>demo</groupId>

<artifactId>demo-service</artifactId>

<version>0.0.1-SNAPSHOT</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

(6)第五步 编写测试代码

编写好代码后三个模块的目录结构(demo-base还未用上, 但实际项目中很有用):

下面贴上代码:

给demo-dao 添加

Demo.java

package demo.demodao;

import javax.persistence.*;

@Entity(name = "demo") //设置实体名, 在数据库中是表名

public class Demo {

@Id

@GeneratedValue(strategy = GenerationType.AUTO) //设置自动增长

@Column(name = "id")

private Integer id;

@Column(name = "name") //设置数据库字段名

private String name;

@Column(name = "id")

private Integer id;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

}

DemoRepository.java

package demo.demodao;

import org.springframework.data.jpa.repository.JpaRepository;

public interface DemoRepository extends JpaRepository<Demo, Integer> {

}

DemoService.java

package demo.demoservice;

import demo.demodao.Demo;

import java.util.List;

public interface DemoService {

Demo addOne(Demo demo);

}

DemoServiceImpl.java

package demo.demoservice.impl;

import demo.demodao.Demo;

import demo.demodao.DemoRepository;

import demo.demoservice.DemoService;

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

import org.springframework.stereotype.Service;

@Service

public class DemoServiceImpl implements DemoService {

@Autowired

private DemoRepository demoRepository;

@Override

public Demo addOne(Demo demo) {

return this.demoRepository.save(demo);

}

}

DemoController.java

package demo.demoweb;

import demo.demodao.Demo;

import demo.demoservice.DemoService;

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

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@Controller

public class DemoController {

@Autowired

private DemoService demoService;

@ResponseBody // 返回 Json 数据

@GetMapping("add")

private Demo add(){

Demo demo = new Demo();

demo.setName("姓名");

demo.setId(1);

return demoService.addOne(demo); // 成功返回 保存后的 demo

}

}

第六步: 创建数据库, 修改配置文件

创建输数据库 test

修改配置文件: 将 demo-web Resource目录下application.properties 文件名改为 applicatin.yml并添加以下内容:

spring:

datasource:

# jdbc:mysql://localhost:3306/test 数据库地址

url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false

username: root # 数据库用户名

password: xxxxxx # 数据库密码

driver-class-name: com.mysql.jdbc.Driver # 数据库驱动

jpa:

hibernate:

ddl-auto: create-drop # create-drop 如果实体对应的表已存在,先删除再创建,否则直接创建

# !!!注意: 第一次运行时可设置为 create-drop, 这样就不需要手动创建数据库表, 但是后面运行务必设置为none

(7) 第七步: 大功告成, 运行项目

直接运行会报错

已解决:将启动类 DemoApplication 移动到 demo 包下

移动:

运行成功!!!!!!!

项目搭建过程中遇到的问题:

Error:(3, 20) java: 程序包demo.demodao不存在

解决方法, 在控制台执行 mvn clean

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。