IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 谷粒商城--整合SpringCloud Alibaba -> 正文阅读

[Java知识库]谷粒商城--整合SpringCloud Alibaba

SpringCloud

更多SpringCloud相关内容关注我这篇文章,这篇文章只做基本的整合没有概念!
https://blog.csdn.net/qq_45714272/article/details/123699797

前言

谷粒商城专栏:https://blog.csdn.net/qq_45714272/category_11939728.html
Github地址:https://github.com/YuyanCai/mall-study

版本选择

不用和老师讲的一模一样,按照官网对照版本即可!
image-20220729165125383

image-20220728163730187

这里要注意的是其他模块也要改springboot的版本,都为2.3.2.rekease

Nacos

1、启动Nacos

image-20220728230611716

2、将微服务注册到 nacos 中

mall-ommon模块进行引入

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

这样所有的引入common模块的其他模块就都有这个服务发现了,接下来还需要两步

  • 在需要将微服务加到注册中心的启动类上加注解@EnableDiscoveryClient

  • 改模块配置文件

    • spring:
          cloud:
              nacos:
                discovery:
                  server-addr: localhost:8848 #nacos地址
      

3、测试

image-20220728232800873

image-20220728232808671

Feign

它的目的就是让远程调用更加简单,Feign提供了HTTP请求的模板。通过写接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息

例如:想要获取当前会员领取到的所有优惠券。先去注册中心找优惠券服务, 注册中心调一台优惠券服务器给会员,会员服务器发送请求给这台优惠券服务器,然后对方响应。

下面我们看它是怎么用的:

1、引入open-feign

前期建模块的时候我们已经引入过了

2、在调用方的主函数头上标注注解打开远程调用,并指定远程调用接口的位置

@SpringBootApplication
@EnableDiscoveryClient //标注启动服务发现
@EnableFeignClients(basePackages = "com.caq.mall.member.feign")
public class MallMemberApplication {

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

3、编写远程调用接口

  1. 通过@FeignClient(“mall-coupon”)指定远程调用哪个微服务
  2. 方法为要调用微服务功能的的签名部分(路径要写全

那么当我们调用这个接口的方法时,他就会去注册中心中找远程服务mall-coupon所在位置,最后调用/coupon/coupon/member/list这个请求对应的方法

package com.caq.mall.member.feign;

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

@FeignClient("mall-coupon")
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/member/list")
    public R memberCoupons();

}

4、测试

被调用方:为优惠卷微服务新添加一个功能,这个功能就是访问这个请求时会返回优惠卷的信息以List的形式

image-20220729000325703

调用方:注入服务,写一个请求来获取用户信息和优惠卷信息

image-20220729000448573

结果如下:

image-20220728235357961

配置中心

配置中心就是把配置文件写在Nacos中,当你修改配置中心内容时项目不需要重启项目即可根据配置文件实现实时更新

官方文档演示:

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

过程如下:

image-20220729074959340

1、引入依赖

common模块

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

2、创建bootstrap.properties

所有配置文件中优先级最高

服务启动后会先读取这个文件,读取后就会去从nacos配置中心加载mall-coupon.properties文件

spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

3、配置中心定义新配置文件

其中,DataID必须为微服务名.properties

配置的内容什么都可以

image-20220729084603849

4、测试

  • 在Controller加上@RefreshScope来动态获取配置数据

image-20220729084827766

image-20220729084910918

配置中心修改配置再刷新

image-20220729084943351

NameSpace

命名空间就是用来隔离资源的

什么情况下会用到呢?

你生产环境想用这一套配置,开发环境想用另一套配置。那么就可以把配置文件放到不同的命名空间中

1、新建命名空间

image-20220729090043943

配置文件

image-20220729090207468

2、bootstrap.properties指定命名空间

微服务启动的时候会先去bootstrap.properties加载,然后根据配置去Nacos配置中心找到文件

image-20220729090431390

3、测试

这个配置就是我prop命名空间定义的配置文件

image-20220729090643591

Group

一般Group和Namespace配合使用

解决方案为:每个微服务创建自己的命名空间,使用配置分组区分环境

分组在创建配置文件的时候直接进行创建即可

1、创建微服务NameSpace并创建分组

image-20220729094413879

2、bootstrap.properties指定分组

spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
spring.cloud.nacos.config.group=11

3、测试

image-20220729093831023

加载多配置集

配置相关的如果都放到一个配置文件中会很乱难维护

所以把配置文件进行拆分,spring相关的放spring配置文件,mybatis相关的放mybatis配置文件…

Nacos也可以做到

1、抽取出多个配置文件

image-20220729095020493

其他配置文件同理

image-20220729095049304

2、bootstrap.properties指定加载多配置集

这里的spring.cloud.nacos.config.extension-configs[0].data-id意思就是说,集合里的元素是一个个数组,数组里有是一个个对象所以第一个元素可以赋值多次

下面配置也是同理

# 配置中心加载配置文件
spring.application.name=mall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=8c4aa2e1-412b-4992-90d7-b74cf3abbef1
spring.cloud.nacos.config.group=11

# 加载多配置集
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=11
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=11
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=11
spring.cloud.nacos.config.extension-configs[2].refresh=true

3、测试

我们注释掉所有本地的yml配置并重启

image-20220729095923691

image-20220729102516969

总结

微服务任何配置信息,任何配置文件都可以放在配置中心中

线上环境的时候我们可以把所有配置都放在配置中心,微服务中只保留一个bootstrap.properties文件说明加载配置中心哪些配置文件即可

GateWay网关

image-20220729124135801

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:29:56  更:2022-08-06 10:34:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:04:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码