谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)

文章目录


前言

谷粒商城学习笔记
由于博主有一些内容学习过 所以有些内容忽略

全笔记链接(链接给出)

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3).

谷粒商城笔记(详细版) IDEA2021 基础篇(2/3).

ES6 VUE 基础篇前端笔记

谷粒商城笔记(详细版) IDEA2021 基础篇(3/3).

一 环境配置

1、环境-配置docker阿里云镜像加速

默认是从docker-Hub拉取镜像
为了加速拉取过程,我们配置阿里云镜像加速
首先登陆进入控制台 搜索容器镜像服务
在这里插入图片描述
接着打开你的Linux输入命令进行操作
在这里插入图片描述
命令如下

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://d5zog6e6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、环境-开发工具-环境安装配置

1.配置Maven

设置setting.xml

<!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
<profile>     
      <id>JDK-1.8</id>       
      <activation>       
        <activeByDefault>true</activeByDefault>       
        <jdk>1.8</jdk>       
      </activation>       
      <properties>       
        <maven.compiler.source>1.8</maven.compiler.source>       
        <maven.compiler.target>1.8</maven.compiler.target>       
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>       
      </properties>       
    </profile>  

2.配置插件 安装vscode

插件安装 MyabtisX 和 lombok
安装vscode
常用的vscode插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 环境-环境配置-git-ssh

没有Git去官网下
首先下载git后点开gitbash
在这里插入图片描述
先去gitee码云官网注册自己的账户

# 配置用户名
git config --global user.name "username"  //(名字,随意写)

# 配置邮箱
git config --global user.email "55333@qq.com" // 注册码云账号时使用的邮箱

# 配置ssh免密登录
ssh-keygen -t rsa -C "55333@qq.com"
三次回车后生成了密钥:公钥私钥
#查看密钥 后面把这个粘贴到Gitee中
cat ~/.ssh/id_rsa.pub

也可以查看密钥
浏览器登录码云后,个人头像上点设置--ssh公钥---随便填个标题---复制

# 测试
ssh -T git@gitee.com
测试成功,就可以无密给码云推送仓库了

4 环境-项目结构创建并提交到码云

1 配置码云仓库并拉取远程仓库到本地

参考我的图片进行新建仓库配置
在这里插入图片描述
打开IDEA把你新建的gitee仓库拿过来
在这里插入图片描述
url在你刚创建的仓库里拿
在这里插入图片描述
在这里插入图片描述

2 创建项目基本模块结构并推送到gitee(码云)

在这里插入图片描述

在这里插入图片描述
创建大概结构如下
在这里插入图片描述
设置根目录的pom文件
在这里插入图片描述

<?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>com.atguigu.gulimall</groupId>
    <artifactId>gulimall-product</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-ware</module>
        <module>gulimall-product</module>
    </modules>
</project>

接着在根模块的.gitinore设置忽略的文件

在这里插入图片描述

target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar

# 设置忽略没有用的文件
**/mvnw
**/mvnw.cmd
**/.mvn

#忽略子模块的target
**/target/
.idea

#忽略子模块的.gitignore
**/.gitignore

接着推送到码云
在这里插入图片描述

5 环境-数据库结构初始化

创建数据库规则如下
在这里插入图片描述
把给的几张表导入自己的数据库(sql资料去找啊)
在这里插入图片描述

记得启动自己的虚拟机 或者 购买的云服务器
使用如下命令设置redis和mysql自启动

sudo docker ps
sudo docker ps -a
# 这两个命令的差别就是后者会显示  【已创建但没有启动的容器】

# 我们接下来设置我们要用的容器每次都是自动启动
sudo docker update redis --restart=always
sudo docker update mysql --restart=always
# 如果不配置上面的内容的话,我们也可以选择手动启动
sudo docker start mysql
sudo docker start redis
# 如果要进入已启动的容器
sudo docker exec -it mysql /bin/bash
# /bin/bash就是进入一般的命令行,如果改成redis就是进入了redis

二 快速开发

1 人人开源搭建后台管理系统

1 搭建后端 renren-fast

登录gitee
搜索人人开源
renren-fast
renren-fast vue
复制url git 克隆到本地
在这里插入图片描述
然后把后端拖到项目中并作为一个模块加入
在这里插入图片描述

人人开源reren-fast踩坑解决(巨坑)

后台运行renren-fast启动类后一直提示java找不到符号
其实是lombok版本的问题
我们到其配置文件中更改Lombok版本号为
1.18.20
在这里插入图片描述
再起启动运行发现问题解决
在这里插入图片描述

2 搭建前端 renren-fast-vue

使用vscode打开这个项目
打开运行 npm install
然后 npm run dev
在这里插入图片描述

报错解决

解决方案参考自博客
原解决方案链接.

//卸载你原来的 node-sass
npm rebuild node-sass
npm uninstall node-sass

//指定node-sass版本,这句等价于修改package.json文件了。
//注意不要指定4.9.2了
npm install  node-sass@4.14

//安装其他依赖:
npm install

# 启动项目:
npm run dev

2 逆向工程的搭建和使用

搜索人人开源 克隆renren-generator
在这里插入图片描述
删除其中的.git文件
把其拖入到我们的项目当中
在这里插入图片描述
在这里插入图片描述
然后更改renren-generator的配置文件
进行代码生成
具体更改如下
在这里插入图片描述
在这里插入图片描述
然后直接启动(我这里改了端口号)
在这里插入图片描述
访问对应的地址
在这里插入图片描述
全选然后生产代码(生产一堆sql和一个main文件夹)
在这里插入图片描述
把main中的粘贴到对应的项目模块中(发现多出很多内容)
在这里插入图片描述
有些爆红是因为依赖没有导入

我们自己定一个gulimall_common模块
首先让guli_product模块依赖这个模块
每一个微服务的依赖 工具类 bean放到这里

common模块的大概依赖

    <dependencies>
<!--        公共的myabtis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--公共lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
        <!-- 统一返回工具R需要的依赖 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.14</version>
        </dependency>
<!--        Query工具类需要的依赖-->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

    </dependencies>

去renren-fast里找到对应的工具类
在renren-common中创建一个包路径相同的utils
把renren-fast common里面的工具类粘过去
在这里插入图片描述
总之就是哪里爆红去renren-fast去找
然后粘贴到guli_common模块里

除了shiro有关的依赖 因为用的是springsecurity
因此我们要重新生成controller层代码

到renren-generator模块中修改代码
在这里插入图片描述
在这里插入图片描述
重新启动renren-generator
把生成的新的controller代码粘贴进去
解决报错

3 配置-测试微服务基本的curd功能

官方视频又添加删除了一些guli-common中的依赖等
自己参照着先解决
最终guli-common依赖如下 更新时间(2022.5.6日)

注意我这个依赖里的spring cloud 和 spring cloud-alibaba版本和你的一样不
不一样改一下啊

<?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>com.atguigu.gulimall</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gulimall_common</artifactId>
    <description>每一个微服务的依赖 工具类 bean放到这里</description>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
<!--        公共的myabtis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
<!--            <version>3.5.1</version>-->
            <version>3.2.0</version>
        </dependency>
        <!--公共lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>provided</scope>
        </dependency>
        <!-- 统一返回工具R需要的依赖 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.14</version>
        </dependency>
<!--        Query工具类需要的依赖-->
        <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>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.9.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
            <scope>compile</scope>
        </dependency>

<!--        springcloudDISCOVERY-->
<!--        为了使用新版本的SpringCloud Feign(使用spring-cloud-loadbalancer) 引入 并排除配置-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!--            不使用Ribbon 进行客户端负载均衡-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

<!--        nacos配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    <!--bookstrap启动器-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.4</version>
        </dependency>
    </dependencies>

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


</project>

在这里插入图片描述

然后测试gulimall-product的基本功能(测试在下面进行测试)

4 生成全部模块curd功能并进行测试

1 renren-generator生成代码

首先配置yml文件
在这里插入图片描述
接着更改generator,properties
在这里插入图片描述

2 将生成的代码导入对应模块

1 模块pom依赖guli-common模块
2 更改Yml配置文件设置(此处列举一个,具体参照官方视频)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/gulimall_wms?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 11000


3 配置完成后进行模块测试

在这里插入图片描述
在这里插入图片描述
测试成功
其他模块也都这样生成一下代码

三 分布式组件

1为什么使用springcloud-alibaba

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

2 在你的common模块引入cloud依赖管理

在这里插入图片描述

官方文档.
在你的guli-common模块中引入依赖统一管理版本

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

3 Nacos做注册中心

官方文档
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md

1 在guli-common中引入依赖(因为我们所有模块都要做注册中心)

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

2 下载nacos-server(链接已经给出)

https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md
在这里插入图片描述

在这里插入图片描述
下载后先在本机测试运行
解压
bin目录
start

3 nacos-server启动报错解决

找到nacos的startup.cmd文件
在这里插入图片描述
编辑配置
nacos启动时,默认以集群方式启动,如果你是单机启动,需要修改startup.cmd文件中的配置
把cluster改为standalone
再次启动发现启动成功

4 把各个模块注册到服务中心当中

因为我们的discover依赖已经在guli-common模块中
所以只需要对配置文件和启动类进行简单的配置

1配置文件配置

在这里插入图片描述
名字一定要配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/gulimall_ums?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
    cloud:
      nacos:
        discovery:
          server-addr: 127.0.0.1:8848
  application:
    name: gulimall-member

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml
  global-config:
    db-config:
      id-type: auto
server:
  port: 8000

2 启动类上添加注解

在这里插入图片描述

package com.atguigu.gulimall.member;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }

}

重新启动模块
访问localhost:8848/nacos 默认账户密码都为nacos
在这里插入图片描述

4 openfeign服务间调用

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

1 在对应的模块中导入openfeign依赖

<!--    feign服务间调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

在这里插入图片描述

2 建立一个feign包 编写代码

在这里插入图片描述

package com.atguigu.gulimall.member.feign;

import com.atguigu.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient("gulimall-coupon")
public interface FeignTest {
    /**
     * 测试feigen
     */
    @RequestMapping("/coupon/coupon/test")
    public R testFeign();

}

3 开启远程调用功能

在这里插入图片描述

package com.atguigu.gulimall.member;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }

}

4 新版本报错解决(大坑,有代码)

我springboot版本是2.6.7
其openfeign版本如下
在这里插入图片描述
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错
解决方法
加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效

所以我们这里在guli-common中更改依赖设置
在这里插入图片描述

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <!--            不使用Ribbon 进行客户端负载均衡-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

5 测试访问

发现访问成功
在这里插入图片描述

5 Nacos做配置中心

0 官方文档链接

https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

1 Nacos配置中心不生效解决方案

你的bootstrap.properties文件生效了吗
记得在gulimall-common中引入bootsrap启动类

<!-- nacos配置管理依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.4</version>
        </dependency>

2 具体步骤

* 1、如何使用Nacos作为配置中心统一管理配置
 *
 * 1)、引入依赖,
 *         <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 * 2)、创建一个bootstrap.properties。
 *      spring.application.name=gulimall-coupon
 *      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 * 3)、需要给配置中心默认添加一个叫 数据集(Data Id)gulimall-coupon.properties。默认规则,应用名.properties
 * 4)、给 应用名.properties 添加任何配置
 * 5)、动态获取配置。
 *      @RefreshScope:动态获取并刷新配置
 *      @Value("${配置项的名}"):获取到配置。
 *      如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。

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

在这里插入图片描述

3 一些细节

假如我们把所有配置文件放在一个命名空间下
又大又臃肿 所以要合理进行配置隔离
这里使用的方式是 微服务名做命名空间+不同环境做group分组

配置文件代码如下

spring.application.name=gulimall-coupon

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=1986f4f3-69e0-43bb-859c-abe427b19f3a

#项目中需要的数据
spring.cloud.nacos.config.group=prod

#启动项目的配置文件
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

2、细节
 *  1)、命名空间:配置隔离;
 *      默认:public(保留空间);默认新增的所有配置都在public空间。
 *      1、开发,测试,生产:利用命名空间来做环境隔离。
 *         注意:在bootstrap.properties;配置上,需要使用哪个命名空间下的配置,
 *         spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871
 *      2、每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
 *
 *  2)、配置集:所有的配置的集合
 *
 *  3)、配置集ID:类似文件名。
 *      Data ID:类似文件名
 *
 *  4)、配置分组:
 *      默认所有的配置集都属于:DEFAULT_GROUP;
 *      1111,618,1212
 * 
 * 3、同时加载多个配置集
 * 1)、微服务任何配置信息,任何配置文件都可以放在配置中心中
 * 2)、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
 * 3)、@Value,@ConfigurationProperties。。。
 * 以前SpringBoot任何方法从配置文件中获取值,都能使用。
 * 配置中心有的优先使用配置中心中的,
 *
 * 项目中的使用:每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod

6 spring-cloud gateway网关

官方文档
https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/
https://spring.io/projects/spring-cloud-gateway#overview

1 简介

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

三大核心概念:

Route:

Predicate断言:
判断是否满足条件

Filter: 过滤器

在这里插入图片描述
满足断言

断言的匹配规则
https://blog.csdn.net/weixin_43199379/article/details/107768203

1.5 编写配置文件的坑


配置文件写断言等号左边不要写空格 因为是找不到 Query + 空格的
在这里插入图片描述

2 具体实现

1 依赖参照

这里springboot版本可能和你不一样 2.6.7

<?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.6.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.atguigu.gulimall</groupId>
    <artifactId>gulimall-gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gulimall-gateway</name>
    <description>gulimall-gateway</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.1</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.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</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>
2 配置gateway网关配置
#Router And Predicates And Nacos discovery
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
  application:
    name: gulimall-gateway
server:
  port: 88

3最终测试

我们访问http://localhost:88/hello?url=baidu
相当于访问
www.baidu.com/hello

我们访问
http://localhost:88/?url=baidu
相当于访问
www.baidu.com

7 配置文件格式规范总结

像视频中所讲 定义了许多
application.properties
application.yml
bootstrap.properties
这样显得十分杂乱无章 若胡乱编写可能会遇到冲突,
虽然不报错但无法把服务注册到Nacos配置中心(已经遇到了)
因此做一个规范总结是有必要的
在这里插入图片描述
这里以网关的配置文件举例子

代码如下

1 application.yml的配置文件



#GateWay And Nacos discovery
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu

        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
  application:
    name: gulimall-gateway
server:
  port: 88

2 bootstrap.properties的配置文件

# 使用Nacos-配置中心的基本配置
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=a9a88be6-6087-4a6b-adff-64f12d65394d
spring.cloud.nacos.config.group=prop

#加载配置集
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true

spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true


3 刚开始开发先用一个 application.yml 就行 后续再使用bootstrap.properties

四 基础篇前端部分

前端部分的博客在这里
谷粒商城前端基础部分,更新完毕2022/5/2.

五 基础篇开发部分(链接给出)

由于篇幅问题
基础篇开发部分在这个博客中进行编写
谷粒商城基础篇开发部分.

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qwecxzz

鸡腿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值