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

文章目录

  • 前言
  • 全笔记链接(链接给出)
  • 一 环境配置
    • 1、环境-配置docker阿里云镜像加速
    • 2、环境-开发工具-环境安装配置
      • 1.配置Maven
      • 2.配置插件 安装vscode
    • 3 环境-环境配置-git-ssh
    • 4 环境-项目结构创建并提交到码云
      • 1 配置码云仓库并拉取远程仓库到本地
      • 2 创建项目基本模块结构并推送到gitee(码云)
    • 5 环境-数据库结构初始化
  • 二 快速开发
    • 1 人人开源搭建后台管理系统
      • 1 搭建后端 renren-fast
      • 人人开源reren-fast踩坑解决(巨坑)
      • 2 搭建前端 renren-fast-vue
      • 报错解决
    • 2 逆向工程的搭建和使用
    • 3 配置-测试微服务基本的curd功能
    • 4 生成全部模块curd功能并进行测试
      • 1 renren-generator生成代码
      • 2 将生成的代码导入对应模块
      • 3 配置完成后进行模块测试
  • 三 分布式组件
    • 1为什么使用springcloud-alibaba
    • 2 在你的common模块引入cloud依赖管理
    • 3 Nacos做注册中心
      • 1 在guli-common中引入依赖(因为我们所有模块都要做注册中心)
      • 2 下载nacos-server(链接已经给出)
      • 3 nacos-server启动报错解决
      • 4 把各个模块注册到服务中心当中
        • 1配置文件配置
        • 2 启动类上添加注解
    • 4 openfeign服务间调用
      • 1 在对应的模块中导入openfeign依赖
      • 2 建立一个feign包 编写代码
      • 3 开启远程调用功能
      • 4 新版本报错解决(大坑,有代码)
      • 5 测试访问
    • 5 Nacos做配置中心
      • 0 官方文档链接
      • 1 Nacos配置中心不生效解决方案
      • 2 具体步骤
      • 3 一些细节
    • 6 spring-cloud gateway网关
      • 1 简介
      • 1.5 编写配置文件的坑
      • 2 具体实现
        • 1 依赖参照
        • 2 配置gateway网关配置
      • 3最终测试
    • 7 配置文件格式规范总结
      • 1 application.yml的配置文件
      • 2 bootstrap.properties的配置文件
      • 3 刚开始开发先用一个 application.yml 就行 后续再使用bootstrap.properties
  • 四 基础篇前端部分
  • 五 基础篇开发部分(链接给出)


前言

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

全笔记链接(链接给出)

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

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

ES6 VUE 基础篇前端笔记

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

一 环境配置

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

默认是从docker-Hub拉取镜像
为了加速拉取过程,我们配置阿里云镜像加速
首先登陆进入控制台 搜索容器镜像服务
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第1张图片
接着打开你的Linux输入命令进行操作
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第2张图片
命令如下

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


        
            alimaven
            central
            aliyun maven
            http://maven.aliyun.com/nexus/content/repositories/central/
        
     
      JDK-1.8       
             
        true       
        1.8       
             
             
        1.8       
        1.8       
        1.8       
             
      

2.配置插件 安装vscode

插件安装 MyabtisX 和 lombok
安装vscode
常用的vscode插件
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第3张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第4张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第5张图片

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

没有Git去官网下
首先下载git后点开gitbash
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第6张图片
先去gitee码云官网注册自己的账户

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

# 配置邮箱
git config --global user.email "[email protected]" // 注册码云账号时使用的邮箱

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

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

# 测试
ssh -T [email protected]
测试成功,就可以无密给码云推送仓库了

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

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

参考我的图片进行新建仓库配置
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第7张图片
打开IDEA把你新建的gitee仓库拿过来
在这里插入图片描述
url在你刚创建的仓库里拿
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第8张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第9张图片

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

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

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第11张图片
创建大概结构如下
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第12张图片
设置根目录的pom文件
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第13张图片



    4.0.0
    com.atguigu.gulimall
    gulimall-product
    0.0.1-SNAPSHOT
    gulimall
    聚合
    pom

    
        gulimall-coupon
        gulimall-member
        gulimall-order
        gulimall-ware
        gulimall-product
    

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

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

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

接着推送到码云
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第15张图片

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

创建数据库规则如下
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第16张图片
把给的几张表导入自己的数据库(sql资料去找啊)
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第17张图片

记得启动自己的虚拟机 或者 购买的云服务器
使用如下命令设置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 克隆到本地
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第18张图片
然后把后端拖到项目中并作为一个模块加入
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第19张图片

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

后台运行renren-fast启动类后一直提示java找不到符号
其实是lombok版本的问题
我们到其配置文件中更改Lombok版本号为
1.18.20
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第20张图片
再起启动运行发现问题解决
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第21张图片

2 搭建前端 renren-fast-vue

使用vscode打开这个项目
打开运行 npm install
然后 npm run dev
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第22张图片

报错解决

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

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

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

//安装其他依赖:
npm install

# 启动项目:
npm run dev

2 逆向工程的搭建和使用

搜索人人开源 克隆renren-generator
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第23张图片
删除其中的.git文件
把其拖入到我们的项目当中
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第24张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第25张图片
然后更改renren-generator的配置文件
进行代码生成
具体更改如下
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第26张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第27张图片
然后直接启动(我这里改了端口号)
在这里插入图片描述
访问对应的地址
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第28张图片
全选然后生产代码(生产一堆sql和一个main文件夹)
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第29张图片
把main中的粘贴到对应的项目模块中(发现多出很多内容)
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第30张图片
有些爆红是因为依赖没有导入

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

common模块的大概依赖

    

        
            com.baomidou
            mybatis-plus-boot-starter
            3.5.1
        
        
        
            org.projectlombok
            lombok
            1.18.20
            provided
        
        
        
            org.apache.httpcomponents
            httpcore
            4.4.14
        

        
            commons-lang
            commons-lang
            2.6
        

    

去renren-fast里找到对应的工具类
在renren-common中创建一个包路径相同的utils
把renren-fast common里面的工具类粘过去
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第31张图片
总之就是哪里爆红去renren-fast去找
然后粘贴到guli_common模块里

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

到renren-generator模块中修改代码
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第32张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第33张图片
重新启动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>

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

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

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

1 renren-generator生成代码

首先配置yml文件
在这里插入图片描述
接着更改generator,properties
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第35张图片

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 配置完成后进行模块测试

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第36张图片
在这里插入图片描述
测试成功
其他模块也都这样生成一下代码

三 分布式组件

1为什么使用springcloud-alibaba

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第37张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第38张图片

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

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

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


       
           
               com.alibaba.cloud
               spring-cloud-alibaba-dependencies
               2.2.7.RELEASE
               pom
               import
           
       
   

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中引入依赖(因为我们所有模块都要做注册中心)


            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

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
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第40张图片

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第41张图片
下载后先在本机测试运行
解压
bin目录
start

3 nacos-server启动报错解决

找到nacos的startup.cmd文件
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第42张图片
编辑配置
nacos启动时,默认以集群方式启动,如果你是单机启动,需要修改startup.cmd文件中的配置
把cluster改为standalone
再次启动发现启动成功

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

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

1配置文件配置

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第43张图片
名字一定要配置

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 启动类上添加注解

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

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
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第45张图片

4 openfeign服务间调用

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第46张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第47张图片

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


        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

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

2 建立一个feign包 编写代码

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

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 开启远程调用功能

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

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版本如下
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第51张图片
由于SpringCloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错
解决方法
加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效

所以我们这里在guli-common中更改依赖设置
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第52张图片


            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            
            
                
                    org.springframework.cloud
                    spring-cloud-starter-netflix-ribbon
                
            
        

        
            org.springframework.cloud
            spring-cloud-starter-loadbalancer
            2.2.2.RELEASE
        

5 测试访问

发现访问成功
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第53张图片

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启动类


        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            org.springframework.cloud
            spring-cloud-starter-bootstrap
            3.0.4
        

2 具体步骤

* 1、如何使用Nacos作为配置中心统一管理配置
 *
 * 1)、引入依赖,
 *         
 *             com.alibaba.cloud
 *             spring-cloud-starter-alibaba-nacos-config
 *         
 * 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("${配置项的名}"):获取到配置。
 *      如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第54张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第55张图片

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

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 简介

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第57张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第58张图片
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第59张图片

三大核心概念:

Route:

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

Filter: 过滤器

谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第60张图片
满足断言

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

1.5 编写配置文件的坑


配置文件写断言等号左边不要写空格 因为是找不到 Query + 空格的
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第61张图片

2 具体实现

1 依赖参照

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



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.7
         
    
    com.atguigu.gulimall
    gulimall-gateway
    0.0.1-SNAPSHOT
    gulimall-gateway
    gulimall-gateway
    
        1.8
        2021.0.1
    
    
        
            com.atguigu.gulimall
            gulimall_common
            0.0.1-SNAPSHOT
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


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配置中心(已经遇到了)
因此做一个规范总结是有必要的
谷粒商城笔记(详细版) IDEA2021 基础篇(1/3)(2022/5/8已完结)_第62张图片
这里以网关的配置文件举例子

代码如下

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.

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

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

你可能感兴趣的:(java,谷粒商城,java)