Spring Boot聚合项目:达内知道(一)-创建项目、部署静态资源、数据库导入数据、lombok插件安装及使用
1.1 什么是聚合项目?
一般来讲,一个大型项目会拆分成多个模块来开发,好处是每个模块只需要编写自己相关的代码,和其它模块的代码并不干扰,当前模块也不会出现其它模块的包和类,这么做可以专心的开发自己的功能和代码,不会担心其它模块的干扰。
使用聚合项目实现上面的功能,最终效果是创建一个父项目,父项目中可以根据模块设计,创建多个聚合子项目,每个子项目一般编写和处理一个模块的功能。
注意:聚合项目的功能的Maven提供的
1.2 创建聚合项目步骤
(1)创建父项目jd
File---New---Project,选择Spring Initializr,Next
设置Group、项目名Artifict、Type选择Maven POM、Java Version:8
默认,什么都不选
点击Finish,完成项目创建
jd项目创建完毕之后,修改pom.xml文件如下:当前jd项目是一个父项目,只提供结构和通用的依赖,不写任何代码(删除dependencies(依赖)、build(导出jar包)等内容),代码都写在子项目中。
(2)创建子项目jd-shop
选中父项目jd单击右键-->new-->new Module,选择Spring Initializr
设置Group、项目名Artifict、Java Version:8、Package包添加.
默认,什么都不选
点击Finish,完成项目创建
创建出子项目之后要进行"父子相认",在父项目的pom.xml文件中编写:
<packaging>pom</packaging>
<!-- ↓↓↓添加子项目↓↓↓ -->
<modules>
<module>jd-shop</module>
</modules>
<properties>
<java.version>1.8</java.version>
</properties>
子项目的pom.xml文件修改
父子相认完成!
2.达内知道项目概述
我们项目开发的是一个类似百度知道的问答系统:达内知道,原名稻草问答
2.1 主要功能介绍
2.2 主要使用技术
我们先开发单体项目版本,后修改扩展为微服务的版本,期间使用到很多流行技术,尤其是微服务的知识点是现在面试热度较高的。微服务中像SpringCloud、nacos、gateway、redis、Kafka\RocketMQ、Elasticsearch这些组件都有详细的讲解和使用。
2.3 静态页面展示
2.4 最终模块结构
3.创建knows项目
老师knows项目git路径:https://gitee.com/jtzhanghl/knows2105.git
3.1 创建一个新的项目knows,用做父项目
步骤同上,注意:Artifict:knows、Type选择Maven POM
3.2 修改父项目pom.xml
现在企业中流行的Spring Boot版本在2.2.x~2.3.x之间,新出的版本企业中使用的并不多,而且我们配套的开发设置和软件也都是在2.3.x中来调试的,如果使用2.4.x以上的版本会报错!所以我们必须将pom.xml文件引用的Spring Boot版本修改为2.3.x。可以删除无用的build(导出jar包用)、dependencies(组件依赖),后面用的时候再添加!
刷新Maven,出现问题查看Maven解决方案!
3.3 创建knows-portal项目用作子项目
portal是门户的意思,是我们开发的单体项目,创建步骤同上,注意:Artifict:knows-portal、Package“cn.tedu.knows.portal(中间加.)
3.4 进行父子项目相认
父项目:
<modules>
<!--添加子项目-->
<module>knows-portal</module>
</modules>
子项目:删除无用的properties(均在父项目中定义版本,由父项目统一管理版本号,方便维护)、dependencies、build,添加需要用的dependencies
刷新Maven,出现问题查看Maven解决方案!(项目依赖添加完毕后,只需要最后一次刷新maven即可)
4.部署静态资源
将提供给大家的原型网页中的内容全部复制(一共20个),复制到项目中resources文件夹下面的static文件夹(没有则创建)中,需要等待一段时间(电脑配置越差,需要时间越长),加载完成后,启动当前项目(KnowsPortalApplication),访问路径为:localhost:8080/login.html,注意:自己电脑8080端口,被占用,需要在application.properties里面配置端口为8888:server.port=8888,因此访问路径为:http://localhost:8888/login.html。访问该路径后,响应如下页面,表示项目启动成功!
如果项目启动正常,但是不出现页面可以尝试Rebuild项目;
如果显示之前的网页,要清空缓存再刷新(Shift+F5)。
5.导入数据
数据库表简介:
将提供给大家的knows_v4.sql文件中的内容全部复制,粘贴到HeidiSql软件中的查询面板中
直接运行,运行后提示有56个警告,点击确定即可
运行后刷新数据库检查数据是否新增成功
出现上述数据,证明数据库表创建成功!
6.Lombok生成代码
lombok是一个非常好用的工具,它可以帮助我们封装数据的类自动生成get/set方法、生成构造方法、生成toString、equals、hashCode等方法的重写。下面就是使用lombok前后同一个类的代码:
6.1使用lombok
安装插件
安装好后要重启Idea。
如果下载搜索不到,那么百度搜索关键字:lombok 插件离线安装,参考链接:https://blog.csdn.net/shmily_lsl/article/details/80689307。打开网址:https://plugins.jetbrains.com/plugin/6317-lombok/versions,选择对应版本下载安装即可。
idea直接匹配对应版本:
点击Install to IntelliJ IDEA 2020.1,出现Success
idea接收响应,进行安装即可,之后重启idea即可使用!
在子项目knows-portal的pom.xml中添加依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
刷新Maven,出现问题查看Maven解决方案!
6.2 编写代码测试
在cn.tedu.knows.portal下新建包vo,包中创建类Message
package cn.tedu.knows.portal.vo;
import lombok.Data;
//编写@Data注解,使用lombok工具
在KnowsPortalApplicationTests.java编写测试代码,进行测试,测试代码如下:
package cn.tedu.knows.portal;
import cn.tedu.knows.portal.vo.Message;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
输出结果:
你好
Message(id=123, content=你好, name=tom)
上次课我们使用Lombok的@Data注解简化了数据封装类的代码使用,那么Lombok还提供了什么注解呢?@Data注解到底有什么含义呢?
常见Lombok注解如下:
-
@Setter/@Getter:
-
自动生成当前类所有属性的get / set方法,一般情况下写在类上,但是也可以使用在某个属性上,表示对这个属性生成get / set方法
-
-
@ToString:
-
自动重写Object类的toString方法,输出这个类中的所有属性和属性的值
-
-
@EqualsAndHashCode:
-
自动重写equals和hashCode方法
-
-
@Data:
-
这个注解写在类上,它是@Getter、@Setter、@ToString、@EqualsAndHashCode注解的集合,特别适合用在封装数据的类上。
-
-
@AllArgsConstructor:
-
为这个类生成全参构造
-
-
@NoArgsConstructor:
-
为这个类生成无参构造
-
-
@Slf4j:
-
给这个类添加一个可以记录日志的log对象
-
lombok使用注意事项:
有些公司不允许使用lombok,认为有bug风险,因为代码不是自己写的,所以今后工作时,遵守公司要求即可。
达内知道项目使用Lombok简化数据封装类的代码!