草庐IT

Spring Cloud(微服务)学习篇(五)

SSS4362 2023-04-03 原文

Spring Cloud(微服务)学习篇(五)

1 nacos配置文件的读取

1.1 访问localhost:8848/index.html并输入账户密码后进入nacos界面并点击配置列表

1.2 点击右侧的+号

1.3 点击加号后,进入新建配置界面,并做好如下配置

1.4 往下翻动,点击发布按钮

1.5 发布成功后的界面

1.6 在pom.xml(shop-user-server项目)中加入依赖

1.6.1 加入所需要导入的依赖

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

1.6.2 完整的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>shop-user</artifactId>
        <groupId>com.zlz</groupId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>shop-user-server</artifactId>
    <dependencies>
        <!--服务的注册与发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--mvc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--引入短信接口模块-->
        <dependency>
            <groupId>com.zlz</groupId>
            <artifactId>shop-sms-api</artifactId>
            <version>1.0</version>
        </dependency>
        <!--配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

</project>

1.7 变更application.yml文件

1.7.1 加入的部分

config:
        server-addr: 127.0.0.1:8848 #配置中心地址

1.7.2 完整的application.yml代码

server:
  port: 8010 #801开头 表示用户集群 用户服务
spring:
  application:
    name: shop-user #项目名称 作为微服务名
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 #注册中心地址
    config:
      server-addr: 127.0.0.1:8848 #配置中心地址

1.8 变更UserController类

1.8.1 加入的部分

 @Value("${jdbc.username}")
    private String yhm;
    @Value("${jdbc.password}")
    private String password;
    @RequestMapping("config")
    public String config(){
        return "读取的用户名: "+yhm+" ,密码:"+password;
    }

1.8.2 完整的UserController类代码

package com.zlz.controller;

import com.zlz.shop.sms.api.dto.SmsDTO;
import com.zlz.shop.sms.api.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class UserController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("test")
    public String t(){
        //http://shop-sms/send
        String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
//        String s=restTemplate.postForObject("http://127.0.0.1:8021/send", null, String.class);
        return "用户服务调用短信服务 结果:"+s;
    }
    //使用oepnFeign的方式发送短信
    @Autowired
    SmsService smsService;
    @RequestMapping("test2")
    public String t2(){
        //http://shop-sms/send
        String s=smsService.send();
        return "用户服务调用短信服务 结果:"+s;
    }
    @RequestMapping("test3")
    public String t3(String tel){
        SmsDTO smsDTO = new SmsDTO();
        smsDTO.setTel(tel);
        String s=smsService.send2(smsDTO);
        return "用户服务调用短信服务 结果:"+s;
    }

    //spring环境里面的所有数据都可以读取,配置文件都行
    /*这里的jdbc.username需要和配置文件的key保持一致*/
    @Value("${jdbc.username}")
    private String yhm;
    @Value("${jdbc.password}")
    private String password;
    @RequestMapping("config")
    public String config(){
        return "读取的用户名: "+yhm+" ,密码:"+password;
    }
}

1.9 三种情况

1.9.1 更新配置文件后读取内容不刷新

a 启动用户服务

b 第一次访问127.0.0.1:8010/config地址

c 更改配置文件中的usename为zhangsan并点击发布按钮

d 再次访问127.0.0.1:8010/config地址

1.9.2 更新配置文件后读取内容刷新(实时读取最新的配置)

a 变更UserController类
a.1 加上如下注解
@RefreshScope
a.2 完整的UserController类代码
package com.zlz.controller;

import com.zlz.shop.sms.api.dto.SmsDTO;
import com.zlz.shop.sms.api.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RefreshScope//动态刷新config
public class UserController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("test")
    public String t(){
        //http://shop-sms/send
        String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
//        String s=restTemplate.postForObject("http://127.0.0.1:8021/send", null, String.class);
        return "用户服务调用短信服务 结果:"+s;
    }
    //使用oepnFeign的方式发送短信
    @Autowired
    SmsService smsService;
    @RequestMapping("test2")
    public String t2(){
        //http://shop-sms/send
        String s=smsService.send();
        return "用户服务调用短信服务 结果:"+s;
    }
    @RequestMapping("test3")
    public String t3(String tel){
        SmsDTO smsDTO = new SmsDTO();
        smsDTO.setTel(tel);
        String s=smsService.send2(smsDTO);
        return "用户服务调用短信服务 结果:"+s;
    }

    //spring环境里面的所有数据都可以读取,配置文件都行(这些username会在启动项目的时候去读取)
    /*这里的jdbc.username需要和配置文件的key保持一致*/
    @Value("${jdbc.username}")
    private String yhm;
    @Value("${jdbc.password}")
    private String password;
    @RequestMapping("config")
    public String config(){
        return "读取的用户名: "+yhm+" ,密码:"+password;
    }
}
b 启动nacos

c 启动用户服务

d 第一次访问127.0.0.1:8010/config地址

e 更改配置文件中的usename为lisi,并点击发布按钮

f 再次访问127.0.0.1:8010/config地址

1.9.3 读取指定配置文件的内容

a 新建一个配置shop-user-dev
a.1 点右边的加号,进入新建配置界面,然后填写相关信息

a.2 往下翻,点击发布按钮

b 更改application.yml(shop-user-server项目)
b.1 加入如下代码
  profiles:
    active: dev #环境,不写读取的就是无环境配置文件 如shop-user.properties,加了啥就会读取啥
b.2 完整的application.yml代码
server:
  port: 8010 #801开头 表示用户集群 用户服务
spring:
  application:
    name: shop-user #项目名称 作为微服务名
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848 #注册中心地址
    config:
      server-addr: 127.0.0.1:8848 #配置中心地址
  profiles:
    active: dev #环境,不写读取的就是无环境配置文件 如shop-user.properties,加了啥就会读取啥
c 重新启动用户服务

d 访问127.0.0.1:8010/config地址后

有关Spring Cloud(微服务)学习篇(五)的更多相关文章

  1. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  6. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  7. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  8. 机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值 - 2

    文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk​=Var(yt​)Cov(yt​,yt−k​)​其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞

  9. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  10. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

随机推荐