SpringBoot聚合项目
什么是聚合项目
聚合项目是一种项目结构,这个结构由Maven提供
这个结构的特征是可以创建一个父项目,在这个父项目中可以创建多个子项目(聚合项目)
这么做能够将本来在一个项目中的代码分散到多个项目中,每个项目专心编写自己的功能,互不干扰,提高开发效率,降低维护难度
聚合项目示例(举个例子,不做这个项目)
(1)创建 外层 父项目
然后 点 Finish , 然后 底下会 自动下载
修改父项目的pom.xml文件最终xml代码为
删除<dependencies> </dependencies>
和<build> </build>
里的代码,然后 点刷新
如果maven在下载的过程中报错,按下面步骤进行调试:
1.检查idea的setting文件配置
2.关闭所有杀毒软件和防火墙
3.更换网络,如果用的是教室网络,更换为手机的4G或热点 再试
4.打开.m2的repository文件夹文件夹,找到报错的位置,删除对应的文件,然后刷新,重新下载(因为网慢,下载到一半就跳过了,导致没下完,所以报错)
(2)创建子项目
jd-shop 和 jd-backend
子项目创建完毕,需要 配置和父项目的关系,这个步骤我们称之为"父子相认"
(3)父子相认
先在 父项目的pom.xml文件添加
然后 把父项目 这三行 复制,粘贴 到 子项目pom.xml文件中
同样的方法,创建 子项目 jd-backend
达内知道项目概述
达内知道项目是采用了聚合项目结构,支持高并发、高可用、高性能扩展的互联网应用程序
登录、注册和问答模块
实现的功能有:
用户登录、学生注册、显示学生首页、学生提问、完善学生首页、显示讲师首页、显示问题详情页、讲师回复、显示讲师回复列表、讲师或学生评论(增、删、改、查)、学生采纳答案
- 用户登录(Spring-Security 实现密码加密,权限管理等,并进行 登录验证 与 授权控制)
- 学生注册(Spring-Validation 前后端双重验证,防黑客)
- 学生首页(包含显示所有标签,显示当前登录学生的问题列表,PageHelper分页)
- 学生提问(模板复用所有标签,加载标签和讲师,富文本编辑器,v-select,文件上传,学生提问)
- 完善首页(显示问题状态,用户信息面板,以及复用)
- 讲师首页(查询讲师任务列表,技术基本和学生问题列表一致)
- 问题详情页(显示当前问题信息)
- 讲师回复(新增并将讲师回复的问题显示在回答列表中)
- 显示讲师回复列表(将新增的回答显示在回答列表中)
- 评论的增删改查(将新增的评论显示在评论列表中、同步页面删除效果)
- 问题的采纳
项目主要功能:
项目最终模块展示:
开发本项目的基本流程:
- 开发单体项目,完成基本功能
注册
登录
用户首页
学生提问
问题详情
讲师回答
显示回答
添加评论
显示评论
评论的删除和修改
问题的采纳 - 单体项目开发成微服务
微服务基本概念
注册中心
网关
拆分项目
搜索模块
整体部署运行
项目流程:
1、创建达内知道项目
(1)创建父项目
knows(知道)
修改父项目的pom.xml文件最终xml代码为
删除<dependencies> </dependencies>
和<build> </build>
里暂时没用的代码,然后 点刷新
(2)创建子项目
knows-portal(门户)
portal是我们当前要编写达内知道项目的主要项目,包含我们项目中的所有业务代码
子项目创建完毕,需要 配置和父项目的关系,这个步骤我们称之为"父子相认"
(3)父子相认
先在 父项目的pom.xml文件添加
然后 把父项目 这三行 复制,粘贴 到 子项目pom.xml文件中
可以把子项目的<build> </build>
里的代码 删掉
把<dependencies> </dependencies>
里的代码留着
(3)复制静态资源文件:
把老师给的 原型网页里20个,复制 粘贴到 idea 这个文件夹里
如果报错,就把 Idea 软件关了重新打开,就好了
复制完毕之后,我们可以启动 portal 项目
打开浏览器输入localhost:8080/index_student.html测试访问
(4)将数据导入数据库
将老师发的 knows_v3.sql 文件中的代码复制到 HeidiSql 中运行,就能获得达内知道项目的数据库中的内容了
首先 启动 电脑上的MySql 服务
打开HeidiSQL 软件(显示数据库的软件)
Mariadb国斌阶段讲的
Mariadb(开发mysql 那人单独做的一个软件)与 mysql(被Oracle收购了),所以它两可以说是一个软件,命令啥的一模一样
安装的MariaDb,安装包自带一个可视化工具:heidiSQL
所以 在桌面左下角,搜索HeidiSQL
先试一下 怎么用,点数据 可以看到数据库数据,点查询 可以写 SQL语句,并且查询
把老师发的 knows_v3.sql 打开,Ctrl+A 全选 复制
产生56个警告,就说明对了,点击确定。 只运行一次
演示 删库的操作
达内知道项目总共14张表,点 tag表 演示看一下数据
达内知道项目总共14张表 (工作了一个项目40多张表)
如果想把一个项目或模块的功能搞清楚,首先要理解它数据库表的设计和内容
中间3个关系表,不是很重要,最后看
重要的看 上面用户 权限那几张表,下面 问题 标签 回答 评论这几张表
(5)Lombok 插件简化开发
编写上面14个表对应的实体类,其中有的表列数在10列以上,那么在编写实体类时就要写10个以上的属性,来对应每个属性都要写get / set方法
这个类就会非常臃肿,我们可以使用Lombok来简化实体类中的get / set方法以及一些其它的常用方法的编写
要想使用,首先需要在Idea中安装一个插件
插件安装完毕去添加 pom.xml 文件的依赖
我们在工作中可能看到很多实体类的包名
例如: entity,model,domain,pojo,bean
测试使用: 编写一个Tag表 对应的实体类
添加了@Data 注解表示启用了lombok
到 测试类 中调用tag对象的set / get方法测试一下
上面的测试代码顺利运行,表示我们的Lombok一切正常
Lombok提供的主要注解有:
- @Getter@Setter: 自动将当前类中所有的属性生成get \ set方法
- @ToString: 重写返回当前类属性值的 To String方法
- @EqualsAndHashCode: 重写当前类的Equals 和 HashCode方法
- @NoArgsConstructor: 自动生成当前类的 无参构造方法
- @AllArgsConstructor:自动生成当前类的 全参构造方法
- @Data: 结合了@Setter@Getter@ToString@EqualsAndHashCode注解的复合注解,使用起来一般就在类上添加一个 @Data就可以了
- @Slf4j:这个注解会向当前类中添加一个记录日志的对象log,这个log对象可以向java控制台输出日志信息
(6)MyBatis Plus简化开发
MyBatis Plus框架是在MyBatis框架基础上,新增了一些功能的升级版
添加MyBatisPlus的依赖
注意:
SpringBoot框架中自带了很多常见框架的版本号,所以在子项目依赖中,不需要声明版本号就可以添加依赖
但是MyBatis和MyBatisPlus并不在Spring Boot默认支持版本号的列表中
所以我们需要自己定义它们的版本号
推荐的方式是在我们的父项目pom文件中定义版本,并管理它
在 父项目pom.xml文件中添加
父项目中定义好了版本
子项目中在添加这个依赖时,就不需要声明版本了,直接使用父项目定义的
在knows-portal项目的pom.xml文件中添加依赖