目录
1:环境搭建
1.1:MYSQL数据库
1.1.1:导入相应的sql
1.2:Linux中的docker-compose方法集中部署
1.2.1:介绍
1.3:IDEA设置
1.3.1:基本要求
1.3.2:设置项目编码格式
1.3.3:设置Maven仓库
1.4:Maven模块分析
1.4.1:工程主体架构介绍
1.4.2:工程架构搭建
1.4.3:模块依赖分析
1.5:模块依赖
1.5.1:tanhua-parent父项目
1.5.2:tanhua-autoconfig(自动装配)
1.5.3:tanhua-model(实体类)
1.5.4:tanhua-commons(工具类)
1.5.5:tanhua-dubbo(父dubbo)
1.5.6:tanhua-dubbo-interface(将项目中的进行封装到接口模块中)
1.5.7:tanhua-dubbo-db:提供接口的实现类模块(暴露自己的实现提供给消费)
1.5.8:tanhua-dubbo-mongo:(mongodb数据库)
1.5.9:tanhua-app-server:消费者服务用来调用接口模块,消费提供者模块的实现
1.6:Lombok
1.6.1:配置安装
1.6.2:常用注解
1:环境搭建
1.1:MYSQL数据库
数据库表 | 说明 |
---|---|
tb_user | 用户表 |
tb_user_info | 用户详情表 |
tb_settings | 用户设置表 |
tb_question | 好友问题表 |
tb_black_list | 黑名单 |
tb_announcement | 公告表 |
将资料中数据库表导入到MYSQL中
1.1.1:导入相应的sql
(1) 打开Navicat ,点击右键选择新建数据库,名字跟我们要导入的数据库的名字一样,字符集一般选utf-8
(2) 在新建的数据库上右击,选择“运行SQL文件”,在提示框中选择文件所在的路径,编码保持一致选择utf-8
(3) 提示Successfully 导入成功后,可能在左侧看不到导入的数据库,关闭Navicat,重新打开即可看到
1.2:Linux中的docker-compose方法集中部署
探花交友学习中,除MySQL数据库部署到本地电脑中。其他涉及到的所有组件都已经以docker形式安装到虚拟机中。我们只需要进入虚拟机,使用简单的命令即可。为了方便学习与减少基础服务占用的学习时间,全部使用docker-compose的方式集中式部署。这些文件在linux虚拟机中的/root/docker-file文件夹下
可视化工具的查看图:
虚拟机中的图片:
每个文件夹中都包含一个docker-compose.yml配置文件,一键启动并部署应用。
#进入组件目录cd /root/docker-file/base/#执行docker-compose命令docker-compose up -d
1.2.1:介绍
base
其中包含redis,nacos,yapi,mongo
fastdfs
包含fastdfs操作需要的组件
rmq
包含RabbitMQ需要所有组件
recommend
包含推荐系统需要所有组件
1.3:IDEA设置
1.3.1:基本要求
项目依赖环境(需提前安装好)
JDK1.8
Intellij Idea
maven-3.x以上
Git
UTF-8编码格式
1.3.2:设置项目编码格式
1.3.3:设置Maven仓库
设置本地仓库,建议使用资料中提供好的仓库
1.4:Maven模块分析
1.4.1:工程主体架构介绍
父工程 | 工程名称 | 说明 |
---|---|---|
tanhua-parent | tanhua-autoconfig | 自动装配的工具类 |
tanhua-parent | tanhua-model | 实体类模块 |
tanhua-parent | tanhua-dubbo | Dubbo子模块(可以理解为文件夹,管理dubbo模块) |
tanhua-parent | tanhua-app-server | 与手机端交互的入口模块 |
tanhua-parent | tanhua-commons | 工具类模块 |
tanhua-dubbo | tanhua-dubbo-interface | Dubbo接口模块 |
tanhua-dubbo | tanhua-dubbo-db | Dubbo服务模块(数据库部分) |
tanhua-dubbo | tanhua-dubbo-mongo | Dubbo服务模块(MongoDB部分) |
1.4.2:工程架构搭建
整体项目使用Maven架构搭建,采用聚合工程形式管理模块,为了便于调用,dubbo需要拆分为接口模块和服务模块
1.4.3:模块依赖分析
1.5:模块依赖
1.5.1:tanhua-parent父项目
父项目包含其他子模块,管理依赖
4.0.0 com.czxy.tanhua tanhua-parent pom 1.0-SNAPSHOT tanhua-app-server tanhua-autoconfig tanhua-commons tanhua-dubbo tanhua-model tanhua-dubbo/tanhua-dubbo-db tanhua-dubbo/tanhua-dubbo-interface tanhua-dubbo/tanhua-dubbo-mongo org.springframework.boot spring-boot-starter-parent 2.3.9.RELEASE 8 8 5.1.47 2.11.0 1.0.9 2.5 2.0 2.5 3.3.2 1.3.2 3.5.6 3.4.1 1.18.8 4.0.5 Hoxton.SR10 2.2.5.RELEASE org.springframework.boot spring-boot-starter-test test junit junit 4.12 test org.projectlombok lombok cn.hutool hutool-all 5.4.3 com.alibaba fastjson 1.2.8 io.netty netty-bom 4.1.59.Final pom import io.projectreactor reactor-bom 2020.0.4 pom import io.projectreactor.netty reactor-netty 0.9.8.RELEASE org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${spring-cloud-alibaba.version} pom import joda-time joda-time ${joda-time.version} com.baomidou mybatis-plus-boot-starter ${mybatis.mybatis-plus.version} com.baomidou mybatis-plus ${mybatis.mybatis-plus.version} mysql mysql-connector-java ${mysql.version} org.mongodb mongodb-driver-sync ${mongodb.version} org.projectlombok lombok true ${lombok.version} org.apache.commons commons-lang3 ${commons-lang3.version} com.fasterxml.jackson.core jackson-databind ${jackson.version} com.alibaba druid ${druid.version} commons-codec commons-codec 1.11 org.apache.maven.plugins maven-compiler-plugin 3.2 1.8 1.8 UTF-8 <!-- 打包可运行的spring boot项目 【需要时,拷贝所需项目】 org.springframework.boot spring-boot-maven-plugin 启动类 -->
1.5.2:tanhua-autoconfig(自动装配)
Spring自动装配工具类:阿里云发送短信,图片上传,图片人脸识别
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT 4.0.0 tanhua-autoconfig 8 8 UTF-8 com.aliyun aliyun-java-sdk-core 4.5.3 com.aliyun dysmsapi20170525 2.0.1 com.aliyun.oss aliyun-sdk-oss 3.10.2 com.aliyun facebody20191230 1.0.10 com.baidu.aip java-sdk 4.8.0 org.springframework.boot spring-boot-starter-web com.easemob.im im-sdk-core 0.2.5 com.aliyun aliyun-java-sdk-green 3.6.1
1.5.3:tanhua-model(实体类)
实体类模块主要是封装具体的实体类
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT 4.0.0 tanhua-model 8 8 UTF-8 com.baomidou mybatis-plus com.baomidou mybatis-plus-generator 3.4.1 org.apache.velocity velocity-engine-core 2.3
1.5.4:tanhua-commons(工具类)
工具类:目前包含了JwtUtils
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT 4.0.0 tanhua-commons 8 8 UTF-8 org.apache.commons commons-lang3 commons-codec commons-codec joda-time joda-time io.jsonwebtoken jjwt 0.9.1
1.5.5:tanhua-dubbo(父dubbo)
dubbo模块属于子模块,在子模块里面还有三个子模块
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT 4.0.0 tanhua-dubbo 8 8 UTF-8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok org.apache.commons commons-lang3 com.fasterxml.jackson.core jackson-databind commons-codec commons-codec joda-time joda-time com.alibaba.cloud spring-cloud-starter-dubbo com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.czxy.tanhua tanhua-commons 1.0-SNAPSHOT com.czxy.tanhua tanhua-dubbo-interface 1.0-SNAPSHOT
1.5.6:tanhua-dubbo-interface(将项目中的进行封装到接口模块中)
将提供者的提供的接口实现方法专门封装到一个接口模块中
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT ../../pom.xml 4.0.0 tanhua-dubbo-interface 8 8 UTF-8 com.czxy.tanhua tanhua-model 1.0-SNAPSHOT
1.5.7:tanhua-dubbo-db:提供接口的实现类模块(暴露自己的实现提供给消费)
提供者模块,暴露自己的接口实现类供消费者调用
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT ../../pom.xml 4.0.0 tanhua-dubbo-db 8 8 UTF-8 org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter mysql mysql-connector-java com.alibaba druid org.projectlombok lombok org.apache.commons commons-lang3 com.fasterxml.jackson.core jackson-databind commons-codec commons-codec joda-time joda-time com.alibaba.cloud spring-cloud-starter-dubbo com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.czxy.tanhua tanhua-dubbo-interface 1.0-SNAPSHOT
1.5.8:tanhua-dubbo-mongo:(mongodb数据库)
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT ../../pom.xml 4.0.0 tanhua-dubbo-mongo 8 8 UTF-8
1.5.9:tanhua-app-server:消费者服务用来调用接口模块,消费提供者模块的实现
app端请求到这个模块,该模块接收请求,处理请求。
tanhua-parent com.czxy.tanhua 1.0-SNAPSHOT 4.0.0 tanhua-app-server 8 8 UTF-8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-redis org.projectlombok lombok org.apache.commons commons-lang3 com.fasterxml.jackson.core jackson-databind commons-codec commons-codec joda-time joda-time io.jsonwebtoken jjwt 0.9.1 com.github.tobato fastdfs-client 1.26.7 ch.qos.logback logback-classic com.alibaba.cloud spring-cloud-starter-dubbo com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-amqp com.czxy.tanhua tanhua-dubbo-interface 1.0-SNAPSHOT com.czxy.tanhua tanhua-commons 1.0-SNAPSHOT com.czxy.tanhua tanhua-autoconfig 1.0-SNAPSHOT junit junit
1.6:Lombok
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码,尤其是针对pojo。
官网:Project Lombok
1.6.1:配置安装
org.projectlombok lombok true
安装IDEA插件:
如果不安装插件,程序可以正常执行,但是看不到生成的一些代码,如:get set方法。
1.6.2:常用注解
@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals canEqual hashCode toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Slf4j:注解在类上;为类提供一个 属性名为log 的 slf4j日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@Builder:使用Builder模式构建对象