Spring Boot聚合项目:达内知道(一)-创建项目、部署静态资源、数据库导入数据、lombok插件安装及使用

1.Spring Boot 聚合项目

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包)等内容),代码都写在子项目中。

 <?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.5.4</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <!--父项目详细信息:下面三行-->
     <groupId>cn.tedu</groupId>
     <artifactId>jd</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>jd</name>
     <description>Demo project for Spring Boot</description>
     <!--聚合项目-->
     <packaging>pom</packaging>
     <properties>
         <java.version>1.8</java.version>
     </properties>
 
 </project>
 

(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文件修改

 <?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>cn.tedu</groupId>
         <artifactId>jd</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>cn.tedu</groupId>
     <artifactId>jd-shop</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>jd-shop</name>
     <description>Demo project for Spring Boot</description>
     <properties>
         <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>

父子相认完成!

 

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(组件依赖),后面用的时候再添加!

 <?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>
         <!--修改Spring Boot版本,建议:2.3.0、4、【7】、10、【12】-->
         <version>2.3.12.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>cn.tedu</groupId>
     <artifactId>knows</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>knows</name>
     <description>Demo project for Spring Boot</description>
<!--聚合项目-->
     <packaging>pom</packaging>
     <modules>
         
     </modules>
     <properties>
         <java.version>1.8</java.version>
     </properties>
 
 </project>

刷新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

 <?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>cn.tedu</groupId>
         <artifactId>knows</artifactId>
         <version>0.0.1-SNAPSHOT</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>cn.tedu</groupId>
     <artifactId>knows-portal</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>knows-portal</name>
     <description>Demo project for Spring Boot</description>
 
     <dependencies>
         <!--包含SpringBoot启动器和Web开发相关依赖(Tomcat等)-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
         <!--SpringBoot测试依赖-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
             <exclusions>
                 <exclusion>
                     <groupId>org.junit.vintage</groupId>
                     <artifactId>junit-vintage-engine</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
 
     </dependencies>
 
 </project>
 

  刷新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

  使用lombok要在Idea中安装一个插件,然后添加依赖,之后在代码中使用。

安装插件

  安装好后要重启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工具
 @Data
 public class Message {
     private Integer id;
     private String content;
     private String name;
 }
 

在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;
 
 @SpringBootTest
 class KnowsPortalApplicationTests {
 
     @Test
     void contextLoads() {
         Message message = new Message();
         message.setId(123);
         message.setContent("你好");
         message.setName("tom");
         System.out.println(message.getContent());
         System.out.println(message);
    }
 
 }
 

输出结果:

 你好
 Message(id=123, content=你好, name=tom)

6.3 Lombok常用注解

  上次课我们使用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简化数据封装类的代码!

posted @ 2021-08-21 22:10  Coder_Cui  阅读(683)  评论(0编辑  收藏  举报