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

news2024/12/22 17:37:31

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地址后

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT解答:PYQT5 的mwindow源码文件里面写了很多的函数方法,随着时间的推移越来越多,代码行数太多,影响了性能,如何解决

ChatGPT解答&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&#xff0c;随着时间的推移越来越多&#xff0c;代码行数太多&#xff0c;影响了性能&#xff0c;如何解决 以下为可复制的内容与实例&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&a…

第一道pwn栈溢出题

代码和解题思路来自启明星辰的《ctf安全竞赛入门》&#xff0c;当然还有好多热心的师傅们的指导。1.代码&#xff1a;#include "stdio.h" void shell() {system("/bin/sh"); } void vuln() {printf("Please input your name:\n");char s[8];gets…

实现pdf文件预览

前言 工作上接到的一个任务&#xff0c;实现pdf的在线预览&#xff0c;其实uniapp中已经有对应的api&#xff1a;uni.openDocument(OBJECT)&#xff08;新开页面打开文档&#xff0c;支持格式&#xff1a;doc, xls, ppt, pdf, docx, xlsx, pptx。&#xff09;**实现了相关功能…

冬奥会信息管理系统

摘 要伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着网络飞速的发展&#xff0c;系统管理这一名词已不陌生&#xff0c;越来越多的体育馆等机构都会定制一款属于自己个性化的管…

【小程序】盒模型笔记

边框样式参数border中solid是实线&#xff0c;dotted是点状&#xff0c;dashed是虚线。还有其它一些&#xff0c;double(双边框)&#xff0c;groove,ridge,inset,outset等3D边框。可单独拎出来定义边框宽度&#xff0c;border-width由前篇可知&#xff0c;padding\margin上下左…

Python 元类编程实现一个简单的 ORM

概述 什么是ORM?    ORM全称“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;就是把关系数据库的一行映射为一个对象&#xff0c;也就是一个类对应一个表&#xff0c;这样&#xff0c;写代码更简单&#xff0c;不用直接操作SQL语句。 现在我们就要实…

白盒测试重点复习内容

白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…

简单介绍编程进制

十进制 十进制的位权为 10&#xff0c;比如十进制的 123&#xff0c;123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。 二进制 二进制的位权为 2&#xff0c;比如十进制的 4&#xff0c;二进制为 100&#xff0c;4 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。 Java7 之前&#xff0c;不支…

【PyTorch】教程:torch.nn.Hardshrink

torch.nn.Hardshrink CLASS torch.nn.Hardshrink(lambd0.5) 参数 lambd ([float]) – the λ\lambdaλ 默认为 0.5 定义 HardShrink(x){x,if x>λx,if x<−λ0,otherwise \text{HardShrink}(x) \begin{cases} x, & \text{ if } x > \lambda \\ x, & \text{…

1528. 重新排列字符串

1528. 重新排列字符串https://leetcode.cn/problems/shuffle-string/ 难度简单52收藏分享切换为英文接收动态反馈 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s &#xff0c;其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新…

Python写一个自动发送直播弹幕的工具,非常简单

哈喽大家好&#xff0c;今天给大家用Python整一个可以在直播间自动发弹幕的工具&#xff0c;来为喜欢的主播疯狂扣6 &#xff01; 事情原由昨晚回家&#xff0c;表弟在看LOL直播&#xff0c;看得我气不打一处来&#xff0c;差点就想锤他。 身为程序员的表弟&#xff0c;看直…

教师论文|科技专著管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;随着计算机和互联网技术的发展&#xff0c;社会的信息化程度越来越高&#xff0c;各行各业只有适应这种发展趋势&#xff0c;才能增强自己的适应能力和竞争能力&#xff0c;不断发展壮大。大学作为教育的基地&#xff0c;是社会进步…

Java 方法简介

如果需要经常做某一操作&#xff0c;则需要重复写类似的代码&#xff0c;比如查找某个数。此外&#xff0c;某些复杂的操作需要分成多个步骤进行&#xff0c;以便理解和维护。 为此&#xff0c;计算机引入了函数的概念&#xff0c;用来减少重复代码&#xff0c;分解复杂操作。…

【Servlet篇3】HttpServletResponse的常用方法

HttpServletResponse代表的是一个HTTP请求对应的响应。 在这一篇文章当中&#xff0c;已经提到了HTTP响应是由哪几部分组成的&#xff1a; 【网络原理7】认识HTTP_革凡成圣211的博客-CSDN博客HTTP抓包&#xff0c;Fiddler的使用https://blog.csdn.net/weixin_56738054/articl…

ChIP-seq 分析:数据与Peak 基因注释(10)

动动发财的小手&#xff0c;点个赞吧&#xff01; 1. 数据 今天&#xff0c;我们将继续回顾我们在上一次中研究的 Myc ChIPseq。这包括用于 MEL 和 Ch12 细胞系的 Myc ChIPseq。 可在此处[1]找到 MEL 细胞系中 Myc ChIPseq 的信息和文件可在此处[2]找到 Ch12 细胞系中 Myc ChIP…

UE5 报错记录

文章目录The following modules are missing or built with a different engine versionXXX could not be compiled. Try rebuilding from source manaually添加组件时提示未定义标识符或函数名法一方法二方法三The following modules are missing or built with a different e…

MediaTek 天玑 8000 5G移动平台详细参数

MediaTek 天玑 8000 移动平台 采用先进的 台积电 5nm 工艺&#xff0c;拥有出众的性能和能效&#xff0c;为高端智能手机用户提供出色的高帧率游戏和 5G 移动体验。 天玑 8000 采用了 MediaTek 诸多先进技术&#xff0c;内置 MediaTek Imagiq 780影像引擎、第五代 AI 处理器APU…

【存储】存储阵列结构

存储阵列结构存储是什么DAS&#xff08;Direct Attached Storage&#xff09;DAS遇到的挑战SAN&#xff08;Storage Area Network&#xff09;FC SAN与IP SAN比较SAN存储应用NAS&#xff08;Network Attached Storage&#xff09;NAS SAN DAS架构SAN与NAS存储的基本区别存储架构…

2023年湖北省建设厅特种工电工架子工怎么报考?甘建二告诉你

2023年湖北省建设厅特种工考试&#xff0c;本人来走过场&#xff0c;即可通过考试哟 2023年湖北省建设厅特种工工种&#xff1a;&#xff08;官方公布&#xff09; 建筑电工&#xff0c;建筑架子工&#xff0c;建筑起重信号司索工&#xff0c;建筑起重机械司机&#xff0c;塔式…

蓝桥杯 python datetime基础

datetime datetime对象可以用来表示精确的日期和时间&#xff0c;其实例化方法如下&#xff1a; import datetime today datetime.datetime(year2022,month9,day21)print(today)print(today.year)#返回datetime对象中的年份print(today.month)#返回datetime对象中的月份prin…