idea mysql多个module_讲二:IDEA创建多个模块MavenSpringBoot项目

目录

在IDEA创建多模块MavenSpringBoot项目

部分注解及细节解释说明

部分代码解释一

首先,了解下maven项目的三种打包方式:

①.war 打包为war包项目时,可以放在tomcat下运行

②.jar 打包成jar包就是要使用java -jar xxx.jar方式来运行,最常见的就是SpringBoot项目

③.pom 它只是用来做依赖管理,打包成的项目并不能直接运行。

- 比如Springboot项目的父依赖以及再住上的依赖打包方式就是pom,因为它们只做依赖管理。

部分代码解释二

①. IDEA使用Spring Initializr与Maven创建项目的区别?

- 位置:(菜单栏【File】→【New】→【Project】,如"图1"所示。

- 首先说明下,两者都可以创建Maven项目,本质上没多大区别,只在pom依赖的引入时间上有所不同。

---------------------------------------------

②. Spring Initializr与Maven区别

- 使用“spring initializr”创建项目,可以直观的手动勾选依赖,项目创建成功后pom.xml中会自带依赖--如"图2"所示。

- 使用“Maven”创建项目,需要自己在pom.xml文件夹中添加依赖。

- (Maven适合网络环境差的情况下使用)

(图1)

(图2)

部分代码解释三

①. 父项目作为用来存放web模块,entity模块,service模块,dao模块的一个空模块。

- 父项目就是刚开始使用IDEA创建的一个空项目模块。

②. 父级项目的packing(打包方式)必须设置为"pom"

③. dependencies 和 DependencyManagement 的区别

- dependencies 在当前项目中引入依赖,如果子项目继承了该项目,也会在子项目中引入依赖。

- DependencyManagement 只是声明依赖,并不实际引入,因此子项目需要显式声明需要用到的依赖。

- 如果在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项,并且没有执行具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。

- 如果子项目指定了版本号,那么会使用子项目中指定的jar版本。

④. 在父项目中的pom.xml中模块信息写法如下:

com.lzk //模块组ID名字

web //模块名

0.0.1-SNAPSHOT //模块版本号

pom //模块的打包方式pom

⑤. 在子模块中的pom.xml中模块信息写法如下:

com.lzk //模块组ID名字

service //模块名

0.0.1-SNAPSHOT //模块版本号

jar //模块的打包方式jar

创建项目前介绍

概述一

①. 首先:创建一个Multi-module2父项目。

- (作用:用来存放创建的多模块项目)。

②. 其次:在Multi-module2父项目下,创建web模块+dao模块+entity模块+service模块。

- 以下对每个子模块作用的解释说明:

web模块:里面存放(启动类和接口访问类)

entity模块:里面存放(实体类及其他Model类)

dao模块:里面存放(访问数据库接口或业务逻辑实现)

service模块:里面存放(做为中转站,将web模块的请求转发给dao来处理,并将返回结果返回给web模块)

③. 最后:将四个模块所需要的依赖分别写入本模块的pom.xml里面,利用web模块启动类来启动项目。

- **注意**:application.yml配置文件放置在web子模块的"resources"文件下,

其他模块可以将"Application启动类"和"resources的application配置文件"删掉,仅留下web模块的启动类和配置文件)。

- application.yml配置文件在本项目工程中,我放置在web子模块的"resources"文件下,其实也可以放置在dao子模块的"resources"文件下。

概述二

这里使用IDEA来演示多模块创建案例,分别需要创建的子模块包含:

①. Web模块:控制层(请求处理层)--启动类 Web模块:是启动类所在的模块。

Web模块:所以我们把配置文件 启动类以及SpringBoot集成maven的插件都放在这个项目模块中。

因此我们要再Web模块(pom.xml)中添加以下依赖:

org.springframework.boot

spring-boot-maven-plugin

-------------------------------------------------------------

②. Entity模块:实体模型层

③. Service模块:业务层

④. Dao模块:数据层

**下面开始创建多模块项目**

第一步:父项目模块创建

打开IDEA-->点击+Create New Project

-->创建一个用来存放存放web子模块,entity子模块,service子模块,dao子模块的父项目空模块--如"图3"所示。

分别步骤如下:

①. 选择Spring Initializr,Initializr默认选择Default,点击Next--如"图4"所示。

②. 填写输入框,点击Next(Group:定义包名,Artifact:定义项目名)--如"图5"所示。

- ("图5"界面的-->Group表示:项目组名,artifact表示:项目名)

③. 这步不需要选择直接点Next(这一步只需要选择对应的版本就可以了,其他的可选可不选)--如"图6"所示。

④. 点击Finish创建项目(此页面一般默认,需要编辑自行修改)--如"图7"所示。

⑤. 最终得到项目结构如下--如"图8"所示。

⑥. 删除无用的.mvn目录、src目录、mvnw及mvnw.cmd文件,最终只留.gitignore和pom.xml--如"图9"所示。

- 保留如下目录结构--"图9"

(图3)

(图4)

(图5)

(图6)

(图7)

(图8)

(图9)

***此时父项目空模块就创建成功了,接下去创建子项目模块***

第二步:子项目模块创建-web模块

①. 创建子模块与上面创建父项目模块方式基本一致。

- 在刚才这个项目的根文件夹上鼠标右键,new->module->选择maven项目,点击Next--如"图10,图11"所示。

- 一定要在刚才这个项目的根文件夹上创建,因为这样它会自动为我们写好依赖关系(pom依赖关系),不然还要自己写。

**注意**:这时注意选择它的父依赖,如果没有就点击右边按纽选择刚才创建的parent-module,填入子项目模块名,点击Next--如"图12"所示。

②. 在选择好在磁盘上的文件夹目录,默认情况下是正确的,直接跳过就好了,点击Finish即可--如"图13"所示。

- (Module file localion:这里的子项目模块一定要在父项目的目录里面)

③. 此时就在parent-module父项目模块下,创建成功子项目模块--如"图14"所示。

④. 创建成功的子项目模块web,就会在父项目模块的pom.xml自动添加如下一句:

web

⑤. 以及在web子项目模块下的pom.xml自动添加如下的父依赖:

- (就是刚才创建的parent-module项目)

parent-module

com.lzk

0.0.1-SNAPSHOT

⑥. 此时这个web的项目就创建好了,我们将这个子项目做为项目入口。

- (在web子项目模块里面,应该要写一个springBoot的启动类来启动项目,只有这一个web项目要写,其他的不用写)--如"图15"所示。

⑦. 作为web层,我们还要在web模块pom.xml中引入springboot-web的依赖

org.springframework.boot

spring-boot-starter-web

---------------------------------------------------

⑧. web子模块需要在resources文件下创建一个application.yml配置文件,用来配置数据库连接。

- application.yml配置文件--如"图A"所示。

(图10)

(图11)

(图12)

(图13)

(图14)

(图15)

(图A)

第三步:子项目模块创建-entity模块

①. 接下去创建entity模块-->

- 在父项目(Multi-module)下鼠标右键,new->module->选择maven项目建entity模块。

(创建步骤和创建web模块步骤同-"图10~图14"),除了web模块,其他模块无需"图15"的启动类。

- 在父项目模块下创建的好dao层-->会自动帮我们在父项目的pom.xml中添加一下子模块依赖:

entity

③. entity模块用来存放实体类,因此我们只需要创建一个实体类即可--如"图16"所示。

- 这里的User上面头部注解@Entity表示:使用Hibernate自动帮我们在数据库创建User这个表.

- @Getter和@Setter:表示自动帮我们在底层创建Get和Set方法.

④. 此时在entity模块的操作就完成了!

(图16)

第四步:子项目模块创建-dao模块

①. 接下去创建dao模块-->

- 在父项目(Multi-module)下鼠标右键,new->module->选择maven项目建dao模块。

(创建步骤和创建web模块步骤同-"图10~图14"),除了web模块,其他模块无需"图15"的启动类。

- 在父项目模块下创建的好dao层-->会自动帮我们在父项目的pom.xml中添加以下子模块依赖:

dao

②. dao模块用来操作数据库表的数据,这里我们使用Jpa来实现持久化,只需继承Jpa接口即可--如"图17"所示。

- (因为Jpa底层自带操作数据的的"增删改查方法")

- Jpa详情可参考此链接:https://www.cnblogs.com/wadmwz/p/10313495.html

③. 由于dao需要依赖entity模块,将查询到的数据映射到User实体类上,因此需要要本模块的pom.xml导入entity模块依赖。

com.lzk

entity

0.0.1-SNAPSHOT

④. 此时在dao模块的操作就完成了!

(图17)

第五步:子项目模块创建-service模块

①. 接下去创建service模块-->- 在父项目(Multi-module)下鼠标右键,new->module->选择maven项目建service模块。(创建步骤和创建web模块步骤同-"图10~图14"),除了web模块,其他模块无需"图15"的启动类。②. 在父项目模块下创建的好dao层-->会自动帮我们在父项目的pom.xml中添加一下子模块依赖:service③. service模块用来将web模块的请求传递到dao模块,执行数据库操作,并将dao模块的返回结果返回给web模块--如"图18,图19"所示。- (因此在service模块中,创建一个UserService接口及其UserServiceImpl接口的实现类)- (UserServiceImpl实现类用来调用dao模块的UserRepository类,执行方法上的查询操作)④. 此时由于service模块需要用到dao和entity模块依赖,因此需在本模块的pom.xml中导入dao和entity模块的依赖。com.lzkdao0.0.1-SNAPSHOTcom.lzkentity0.0.1-SNAPSHOT⑤. 此时在service的操作就做完了!

(图18)

(图19)

第六步:四个模块创建展示

①.此时我们在Multi-module项目下创建的四个模块(web,entity,dao,service)就创建完成了。

②. 模块展示,如"图20"所示。

(图20)

第七步:web模块创建请求接口-UserController及启动增加注解

①. 在web模块中添加一个UserController类,提供给客户或前端页面发起请求的入口--"图21"所示。

②. 需要在WebApplication启动类加上@ComponentScan(value = "com.lzk")注解。--如"图22"所示。

(@ComponentScan注解是对整个项目下的com.lzk包进行扫描,不然会出现UserService或UserRepository找不到的情况)

(图21)

第八步-关于配置文件说明(application.yml)

①. **注意**:配置文件application.yml不管是放在web或dao子模块下的"resources"文件下,都可以正常执行。

②. application.yml配置文件代码如下:

spring:

datasource:

driver-class-name: com.mysql.jdbc.Driver

url: jdbc:mysql://127.0.0.1:3306/usermodule?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC

username: root

password: root123

jpa:

hibernate:

ddl-auto: update

show-sql: true

database-platform: org.hibernate.dialect.MySQL5InnoDBDialect

-------------------------------------------------------------

③. application.yml配置文件是放在web模块还是dao模块呢?

- 首先:不管是放在web模块是dao模块都可以。

- 其次:如果有两个相同名字的application.yml配置文件,会优先执行web模块里面的配置文件,

因为web模块包含启动类,是项目的入口。

- 最后:如果web模块里面没有application.yml配置文件,dao里面有配置文件,则会读取dao模块里面的application.yml配置文件。

因此优先顺序是:先读取web模块配置文件,若web模块不存在配置文件,则读取dao模块的配置文件。

项目工程完成

①. 最终的项目结构图示-"图22"

(图22)

项目工程测试

①. 使用web子模块的WebApplication类来启动项目-"图23-图24"

②. Run表示正常启动项目。

③. Debug表示使用调试模式启动项目。

④. 接下去打开数据库:查看我们User表,以及里面的数据-"图25"

(User表中的数据,可以手动在数据库表中添加进去)

接下去打开游览器,输入:http://localhost:8080/user/list-"图26"

("图26"就查询出数据库对应的所有数据出来了!)

(图23)

(图24)

(图25)

(图26)

启动测试遇到的问题总结

①. 代码写好后,在web模块下运行Application.main()时,可能会报错:错误代码大致显示为:

Description:

-------------Field UserService in com.lzk.modules.UserController required a bean of type 'com.lzk.modules.service.UserService' that could not be fonnd.

②. 说明@Service没有扫描到,因此应该在WebApplication.java类上添加扫描注解@ComponentScan("com.lzk"),即可成功扫描,实现启动!

----------------------------------------------------------------------

具体代码已上传gitee一山/Multi-module2​gitee.com69db21cd9f2d1c2b344fd85fbb3f9ce3.png

**注意**:以上纯属个人学习笔记,整理分享出来,希望对大家有帮助!!

--- 对于有不同观点的大V欢迎评论指点,一起成长,一起进步!!---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值