Spring Boot聚合项目:达内知道

1.Spring Boot 聚合项目

1.1 什么是聚合项目?

  一般来讲,一个大型项目会拆分成多个模块来开发,好处是每个模块只需要编写自己相关的代码,和其它模块的代码并不干扰,当前模块也不会出现其它模块的包和类,这么做可以专心的开发自己的功能和代码,不会担心其它模块的干扰。

  使用聚合项目实现上面的功能,最终效果是创建一个父项目,父项目中可以根据模块设计,创建多个聚合子项目,每个子项目一般编写和处理一个模块的功能。

注意:聚合项目的功能的Maven提供的

1.2 创建聚合项目步骤

(1)创建父项目jd

File---New---Project,选择Spring Initializr,Next

Spring Boot聚合项目:达内知道

设置Group、项目名Artifict、Type选择Maven POM、Java Version:8

Spring Boot聚合项目:达内知道

默认,什么都不选

Spring Boot聚合项目:达内知道

点击Finish,完成项目创建

Spring Boot聚合项目:达内知道

jd项目创建完毕之后,修改pom.xml文件如下:当前jd项目是一个父项目,只提供结构和通用的依赖,不写任何代码,代码都写在子项目中。

 <?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>
     <!--0-聚合项目-->
     <packaging>pom</packaging>
     <properties>
         <java.version>1.8</java.version>
     </properties>
 ?
 </project>
 ?

(2)创建子项目jd-shop

选中父项目jd单击右键-->new-->new Module,选择Spring Initializr

Spring Boot聚合项目:达内知道

设置Group、项目名Artifict、Java Version:8、Package包添加.

Spring Boot聚合项目:达内知道

默认,什么都不选

Spring Boot聚合项目:达内知道

点击Finish,完成项目创建

Spring Boot聚合项目:达内知道

创建出子项目之后要进行"父子相认",在父项目的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 主要功能介绍

Spring Boot聚合项目:达内知道

2.2 主要使用技术

  我们先开发单体项目版本,后修改扩展为微服务的版本,期间使用到很多流行技术,尤其是微服务的知识点是现在面试热度较高的。微服务中像SpringCloud、nacos、gateway、redis、Kafka\RocketMQ、Elasticsearch这些组件都有详细的讲解和使用。

2.3 静态页面展示

Spring Boot聚合项目:达内知道

2.4 最终模块结构

Spring Boot聚合项目:达内知道

 

3.创建knows项目

  老师knows项目git路径:https://gitee.com/jtzhanghl/knows2105.git

3.1 创建一个新的项目knows,用做父项目

步骤同上,注意:Artifict:knows、Type选择Maven POM

Spring Boot聚合项目:达内知道

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(中间加.)

Spring Boot聚合项目:达内知道

3.4 进行父子项目相认

父项目:

 <modules>
     <!--添加子项目-->
     <module>knows-portal</module>
 </modules>

  刷新Maven,出现问题查看Maven解决方案!

子项目:

 <?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>
         <!--starter后面+web,否则项目不能正常启动-->
         <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>
             <exclusions>
                 <exclusion>
                     <groupId>org.junit.vintage</groupId>
                     <artifactId>junit-vintage-engine</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
 ?
     </dependencies>
 ?
 </project>
 ?

  刷新Maven,出现问题查看Maven解决方案!

 

4.部署静态资源

  将提供给大家的原型网页中的内容全部复制(一共20个),复制到项目中resources文件夹下面的static文件夹(没有则创建)中,需要等待一段时间(电脑配置越差,需要时间越长),加载完成后,启动当前项目(KnowsPortalApplication),访问路径为:localhost:8080/login.html,注意:自己电脑8080端口,被占用,需要在application.properties里面配置端口为8888:server.port=8888。

Spring Boot聚合项目:达内知道

  如果项目启动正常,但是不出现页面可以尝试Rebuild项目;如果显示之前的网页,要清空缓存再刷新(Shift+F5)。

 

5.导入数据

数据库表简介:

Spring Boot聚合项目:达内知道

将提供给大家的knows_v4.sql文件中的内容全部复制,粘贴到HeidiSql软件中的查询面板中

Spring Boot聚合项目:达内知道

直接运行

Spring Boot聚合项目:达内知道

运行后刷新数据库检查数据是否新增成功

Spring Boot聚合项目:达内知道

出现上述数据,证明数据库表创建成功!

 

6.Lombok生成代码

  lombok是一个非常好用的工具,它可以帮助我们封装数据的类自动生成get/set方法、生成构造方法、生成toString、equals、hashCode等方法的重写。下面就是使用lombok前后同一个类的代码:

Spring Boot聚合项目:达内知道

6.1使用lombok

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

安装插件

Spring Boot聚合项目:达内知道

  安装好后要重启Idea。

  如果下载搜索不到,那么百度搜索关键字:lombok 插件离线安装,参考链接:https://blog.csdn.net/shmily_lsl/article/details/80689307。打开网址:https://plugins.jetbrains.com/plugin/6317-lombok/versions,选择对应版本下载安装即可。

idea直接匹配对应版本:

Spring Boot聚合项目:达内知道

点击Install to IntelliJ IDEA 2020.1,出现Success

Spring Boot聚合项目:达内知道

idea接收响应,进行安装即可,之后重启idea即可使用!

Spring Boot聚合项目:达内知道

在子项目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)

 

Spring Boot聚合项目:达内知道

上一篇:Greenplum/Deepgreen系统配置参数查看与设置


下一篇:03-SpringCloud 支付模块搭建