谷粒商城(一)

1、环境搭建

本项目的 redis、MySQL 都是使用在 docker 容器里面的,所以需要 Linux 环境

安装 docker

Docker 安装文档

1、卸载系统之前的 docker

 yum remove docker \
			docker-client \
			docker-client-latest \
			docker-common \
			docker-latest \
			docker-latest-logrotate \
			docker-logrotate \
			docker-engine

2、安装 Docker-CE

# 安装必须的依赖
yum install -y yum-utils

# yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++

# 更新yum软件包索引
yum makecache fast
# 设置stable镜像仓库
这里使用阿里云
yum-config-manager --add-repo 
	http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下面是官网,是外网,不推荐
yum-config-manager --add-repo 
	https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker,以及 docker-cli
 yum install docker-ce docker-ce-cli containerd.io

3、启动 docker

systemctl start docker

4、设置 docker 开机自启

systemctl enable docker

5、测试 docker 常用命令,注意切换到 root 用户下
docker version

docker 常用命令

6、配置 docker 镜像加速

# 登陆阿里云开发者平台 -> 点击控制台 -> 选择容器镜像服务 -> 下面操作文档里面的配置镜像加速

mkdir -p /etc/docker
vim /etc/docker/daemon.json

tee /etc/docker/daemon.json <<-'EOF' 
{ 
	"registry-mirrors": `["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart

docker 安装 mysql

1、下载镜像文件docker pull mysql:5.7

2、创建实例并启动

docker run -p 3306:3306 --name mysql
			-v /mydata/mysql/log:/var/log/mysql 
			-v /mydata/mysql/data:/var/lib/mysql 
			-v /mydata/mysql/conf:/etc/mysql 
			-e MYSQL_ROOT_PASSWORD=root 
			-d mysql:5.7

参数说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

MySQL 配置
vi /mydata/mysql/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

注意:解决 MySQL 连接慢的问题
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析

3、通过容器的 mysql 命令行工具连接
docker exec -it mysql mysql -uroot -proot

4、设置 root 远程访问

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

5、进入容器文件系统
docker exec -it mysql /bin/bash

docker 安装 redis

1、下载镜像文件docker pull redis

2、设置配置文件

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

redis 自描述文件

3、修改 /etc/redis/redis.conf 文件

# 开启 redis 验证(可选)
requirepass 123456

# 允许 redis 外地连接,注释掉
 # bind 127.0.0.1

# 设置 
daemonize no

# 开启 redis 持久化,appendonly yes (可选)

4、创建实例并启动

docker run -p 6379:6379 --name redis 
			-v /mydata/redis/data:/data 
			-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf 
			-d redis redis-server /etc/redis/redis.conf

5、使用 redis 镜像执行 redis-cli 命令连接docker exec -it redis redis-cli

设置随着 docker 自启动

docker update mysql --restart=always

docker update redis --restart=always

安装配置 git

1、下载 git https://git-scm.com

2、配置 git,进入 git bash

# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)

3、IDEA 初始化 git

在用户目录下(C:\Users\ASUS)创建忽略规则文件 git.ignore,写入内容
在 .gitconfig 文件中引用忽略配置文件
在 IDEA 中设置,定位 Git 程序

3、IDEA 集成 Gitee

安装 Gitee 插件,登录 Gitee 账号

4、配置 ssh 免密登录

进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车

然后执行 cat ~/.ssh/id_rsa.pub ,会得到一串密钥

登录进入 gitee,在设置里面找到 SSH KEY

将 密钥 的内容粘贴进去

使用 ssh -T git@gitee.com 测试是否成功即可

Git+码云教程

准备工具 IDEA、VsCode

idea 安装 lombok、mybatisx 、gitee 插件

Vscode 安装开发必备插件:

  • Vetur —— 语法高亮、智能感知、Emmet 等 包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl 需要同时按着)
  • EsLint —— 语法纠错
  • Auto Close Tag —— 自动闭合HTML/XML 标签
  • Auto Rename Tag —— 自动完成另一侧标签的同步修改
  • JavaScript(ES6) code snippets — — ES6 语法智能提示以及快速输入,除 js外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
  • HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
  • HTML Snippets —— html 快速自动补全
  • Open in browser —— 浏览器快速打开
  • Live Server —— 以内嵌服务器方式打开
  • Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

在这里插入图片描述

从 gitee 初始化项目

新建仓库

在这里插入图片描述

在这里插入图片描述

IDEA 拉取项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、创建微服务项目

1)、创建项目

商品服务、仓储服务、订单服务、优惠券服务、用户服务

共同:

  1. 都加入的是 web、openfeign 依赖
  2. 每一个服务的包名
    afei.xxx(product/order/ware/coupon/member)
  3. 模块名:gulimall-coupon

商品服务

<?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.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>afei.gulimall</groupId>
    <artifactId>gulimall-product</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gulimall-product</name>
    <description>谷粒商城-商品服务</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>afei.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <!-- 版本后由SpringBoot进行管理-->
        </dependency>

        <!--引入redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--不加载自身的 lettuce-->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--以后使用 redisson 作为分布锁,分布式对象等功能-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.12.0</version>
        </dependency>

        <!--整合SpringCache简化缓存开发-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

        <!--使用 @ConfigurationProperties-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

仓储服务如下(订单服务、优惠券服务、用户服务类似)

<?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.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>afei.gulimall</groupId>
    <artifactId>gulimall-ware</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gulimall-ware</name>
    <description>谷粒商城-仓储服务</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>afei.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

修改 父类 项目的 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>
    <groupId>afei.gulimall</groupId>
    <artifactId>gulimall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gulimall</name>
    <description>聚合服务</description>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <modules>
        <module>gulimall-coupon</module>
        <module>gulimall-member</module>
        <module>gulimall-order</module>
        <module>gulimall-product</module>
        <module>gulimall-ware</module>
        <module>renren-fast</module>
        <module>gulimall-common</module>
        <module>renren-generator</module>
    </modules>
</project>

修改 父类 项目的 .gitignore 文件,让其子类的部分文件不被提交

**/mvnw
**/mvnw.cmd
**/.mvn

**/.gitignore
**/target/
.idea

可在这里查看提交到码云的内容预览

在这里插入图片描述

2)、初始化数据库

建立对应的数据库

在这里插入图片描述

将提供的 sql 文件里面的语句复制进 navicat 执行,直接拖拽sql文件容易出现问题

3、使用人人开源搭建后台管理系统

在这里插入图片描述
点进去后,克隆

在这里插入图片描述

在桌面右击,打开 Git Bash ,将代码下载到桌面

在这里插入图片描述

1)、renren-fast

将后端代码复制进 项目 目录

在这里插入图片描述

在 父类项目 里面加入 人人开源的 module

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.atguigu.gulimall</groupId>
	<artifactId>gulimall</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>gulimall</name>
	<description>聚合服务</description>
	<packaging>pom</packaging>
	<modules>
		<module>gulimall-coupon</module>
		<module>gulimall-member</module>
		<module>gulimall-order</module>
		<module>gulimall-product</module>
		<module>gulimall-ware</module>
		<module>renren-fast</module>
		<module>renren-generator</module>
		<module>gulimall-common</module>
	</modules>

renren-fast 里面有数据库的 sql 语句文件,在数据库创建新库 gulumall_admin ,执行 sql 语句

在这里插入图片描述
在这里插入图片描述

修改 renren-fast 的配置文件

在这里插入图片描述

启动此项目

注意,若 renren-fast 集成了 nacos,就还需要启动 Nacos 服务

问题解决:
1、报错:communication link failure ,或者显示初始化 init datasource error 的,数据库连接配置后面加 &useSSL=false
2、报错找不到包异常的,用一下右边侧边栏的maven里面的install命令
3、数据库连接配置 url 应该如下
gulimall_adminserverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
4、springboot 版本最好一样 2.1.8.RELEASE

访问 localhost:8080/renren-fast

在这里插入图片描述

2)、renren-fast-vue

将桌面上的文件目录 删除 .git 目录,然后用 VsCode 打开
在这里插入图片描述

3)、安装 Node.js

前端开发,少不了 Node.js
Node.js 是一个基于 ChromeV8引擎的 JavaScript 运行环境。
NPM是随同NodeJS一起安装的包管理工具,JavaScript-NPM,Java-Maven;

1)、官网下载安装node.js,并使用 node-v 检查版本。注意版本!!
在这里插入图片描述
在这里插入图片描述

2)、配置npm使用淘宝镜像
npm config set registry http://registry.npm.taobao.org/

在这里插入图片描述

打开 VsCode ,在终端输入 npm install

也可以选择项目文件夹下打开 cmd 命令窗口,和终端一样(注意需要配置环境变量,参考文章

输入 npm install 安装 npm,nodejs默认集成npm

这里npm报错的同学,可以退出vs,然后管理员运行vs,再执行一遍。如果还是不行 就新建一个终端再输入一次npm stall就好了
有报错误的,可以试一下用 cnpm install试试先
出错可参考:https://blog.csdn.net/weixin_43859732/article/details/107779450
https://blog.csdn.net/wangbeita/article/details/112517509

在这里插入图片描述
出现以下界面说明成功

在这里插入图片描述

我这里没有使用 vs,而是使用 cmd 窗口进行操作的
注意执行 npm install 之前,为了防止出错,已经将 renren-fast-vue 项目文件夹下的 package.json 里面的 node-sass 改成 4.9.2

成功后可访问准备启动项目(注意 renren-fast 的 8080 在运行状态,数据库也在运行)

我这里没有下载 vs,在项目的目录下,使用管理员权限打开 cmd ,执行 npm run dev 便可以启动前端项目

在这里插入图片描述

这是 vs 启动成功样式
在这里插入图片描述

刷新 登录界面的 图形验证码,发现后台有输出,说明成功

在这里插入图片描述

4)、人人运行出错汇总:

1、启动renren-fast后台报错 Error creating bean with name ‘scheduleJobService‘

路径:src/main/java/io/renren/modules/job/config/ScheduleConfig.java

ScheduleConfig类中 //PostgreSQL数据库,需要打开此注释

2、在启动之后,登陆时发现跨域问题:
在这里插入图片描述
CorsConfig 类中 addCorsMappings 方法,需要打开此注释

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("*")
            .allowCredentials(true)
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
            .maxAge(3600);
    }
}

3、当有这种报错,说明是因为引入了 mybatis 的依赖,底层就会有引入数据源的相关配置。如果模块中没有使用到数据库,没有配置数据库相关信息,就会报错
在这里插入图片描述

解决:

在依赖中排除 数据库自动配置的相关依赖,也可以在启动类中排除
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

4、使用数据库逆向工程生成代码

可以使用 人人开源的 自动生成项目,也可以使用 MybatisX 插件,使用 IDEA 自带的数据库管理工具

将人人开源的 代码生成 项目克隆到本地

在这里插入图片描述

删除目录中的 .git 目录,然后作为项目的 子模块

在这里插入图片描述

	<modules>
        <module>gulimall-coupon</module>
        <module>gulimall-member</module>
        <module>gulimall-order</module>
        <module>gulimall-product</module>
        <module>gulimall-ware</module>
        <module>renren-fast</module>
        <module>gulimall-common</module>
        <module>renren-generator</module>
    </modules>

修改项目的配置文件 application.yml,更改数据库配置,数据库为需要生成代码的数据库

# mysql
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://150.158.171.144:3306/gulimall_wms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root

修改信息文件 generator.properties ,更改里面生成类的包名和类名

#代码生成器,配置信息

mainPath=afei
#包名
package=afei
moduleName=ware
#作者
author=afei
#Email
email=afei@gmail.com
#表前缀(类名不会包含表前缀)
tablePrefix=wms_

项目运行之后,访问页面,可以看到控制台,选择需要的表,进行生成代码

生成出来的代码会以压缩包形式下载

在这里插入图片描述

打开压缩包,可以看到生成好的代码

在这里插入图片描述

在生成的 controller 类里面,使用的是 shiro 的权限注解,但是本案例中使用的是 SpringSecurity ,所以需要删除注解
在这里插入图片描述
但是一个一个删除比较麻烦,可以在生成代码之前,在 renren-generator 项目里面修改模板
在这里插入图片描述

将代码复制进需要的项目里面,打开类,发现会有报错,因为一些工具类没有正确引用

对于 如下图 的 common 包中的工具类,在前面使用的 renren-fast 项目里面 的 common 包 下的 util 包里面都有现成的

在这里插入图片描述

在这里插入图片描述

然后打开其他类,发现还需要 Lombok、MybatisPlus 等依赖,所以可以提供一个公共类项目,用于提供公用的依赖 以及 一些工具类等

gulimall-common 模块

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>gulimall</artifactId>
        <groupId>afei.gulimall</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall-common</artifactId>
    <description>每一个微服务公共的依赖,bean,工具类等</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.12</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <!--导入mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <!--服务注册/发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--配置中心来做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

实体类

将刚刚生成代码的项目里面需要用到的 common 包下的工具类,从 renren-fast 项目里面拷贝过来

暂时只有红框里面的内容,其他内容都是后续手动创建的

在这里插入图片描述

gulimall-product 模块

各个模块的端口号
在这里插入图片描述

整合MyBatis-Plus

导入依赖 mybatis-plus-boot-starter 3.2.0 (放在common项目)

<!-- mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

配置 :

  1. 配置数据源;

    1. 导入数据库的驱动。mysql-connector-java 8.0(放在common项目)

      <!--导入mysql驱动 -->
              <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>8.0.17</version>
              </dependency>
      
    2. 在application.yml配置数据源相关信息

      server:
        port: 10000
      
      # mysql
      spring:
        datasource:
          driverClassName: com.mysql.jdbc.Driver
          url: jdbc:mysql://150.158.171.144:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
          username: root
          password: root
      
    3. 配置MyBatis-Plus;

      1. 使用@MapperScan

        @MapperScan("afei.product.dao")
        @SpringBootApplication
        public class GulimallProductApplication {
        
            public static void main(String[] args) {
                SpringApplication.run(GulimallProductApplication.class, args);
            }
        
        }
        
      2. 告诉MyBatis-Plus,sql映射文件位置 ,并设置主键自增

        mybatis-plus:
          mapper-locations: classpath:/mapper/**/*.xml
          global-config:
            db-config:
              id-type: auto #设置主键自增
        
  2. 测试
    在这里插入图片描述

5、分布式组件

nacos注册中心

在 common 项目里面引入依赖

	<!--服务注册/发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--配置中心来做配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

然后在其他项目里面更改配置文件

在这里插入图片描述

在启动类上使用注册发现的注解 @EnableDiscoveryClient

nacos配置中心

在 common 项目里面引入依赖
然后在其他项目里面更改配置文件

如何使用Nacos作为配置中心统一管理配置:

  1. 引入依赖, spring-cloud-starter-alibaba-nacos-config

  2. 创建一个bootstrap.properties
    在这里插入图片描述

  3. 需要给配置中心默认添加一个叫 数据集(Data Id),Data Id默认命名规则——应用名.properties

  4. 给 Data Id 添加任何配置

  5. 动态刷新配置
    控制器 controller 上面使用注解 @RefreshScope,表明动态获取并刷新配置

  6. 注意,若配置中心和文件中配置了相同的配置项,优先使用 配置中心的配置

  7. 加载多个配置集
    在这里插入图片描述在这里插入图片描述

openFeign

这里是引用

想要远程调用别的服务:

  1. 引入open-feign
  2. 编写一个接口,告诉SpringCloud这个接口需要调用远程服务
    1. 声明接口的每一个方法都是调用哪个远程服务的那个请求
  3. 开启远程调用功能
    启动类上使用注解 @EnableFeignClients

在需要进行远程调用的模块的 pom 文件里面引入依赖

<properties>
	<java.version>1.8</java.version>
	<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies>
	<dependency>
		<groupId>com.atguigu.gulimall</groupId>
		<artifactId>gulimall-common</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-openfeign</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>${spring-cloud.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

目标方法如下:
在这里插入图片描述

在 member 模块编写接口

在这里插入图片描述

在 member 模块启动类上加注解

在这里插入图片描述

最后即可 在 member 模块 实现远程调用

在这里插入图片描述

gateway

新建模块,加入 gateway 依赖

  1. 开启服务注册发现(配置nacos的注册中心地址)
  2. 编写网关配置文件

在这里插入图片描述

	<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>afei.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</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>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

启动类上开启注册发现 @EnableDiscoveryClient

编写配置文件

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=b5d62415-0dea-4747-a65d-874cc6203bf2
spring:
  cloud:
    gateway:
      routes:
# 表明请求时如果有参数url,且参数值为baidu时,就会跳转到https://www.baidu.com
# 例如访问 88/hello?url=baidu 会跳转到 baodu.com/hello
#        - id: test_route
#          uri: https://www.baidu.com
#          predicates:
#            - Query=url,baidu 

# 表明请求时如果有参数 url,且参数值为 qq时,就会跳转到 https://www.qq.com
# 例如访问 88/hello?url=qq,会跳转到 qq.com/hello
#        - id: qq_route
#          uri: https://www.qq.com
#          predicates:
#            - Query=url,qq


  ## 前端项目,/api
## http://localhost:88/api/captcha.jpg   http://localhost:8080/renren-fast/captcha.jpg
## http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值