当前位置: 首页 > article >正文

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

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.kler.cn/a/970.html

相关文章:

  • 快速排序介绍
  • 自然语言转 SQL:通过 One API 将 llama3 模型部署在 Bytebase SQL 编辑器
  • Android Dex VMP 动态加载加密指令流
  • RTDETR融合[WACV 2024]的MetaSeg中的gmb模块
  • React Fiber框架中的Render渲染阶段——workLoop(performUnitOfWork【beginWork与completeWork】)
  • 如何在后端使用redis进行缓存,任意一种语言都可以
  • 【Linux】网络编程套接字(下)
  • 【Python入门第三十三天】Python 字符串格式化
  • 普通Java工程师 VS 优秀架构师
  • Docekr三剑客之 Docekr compose
  • python 内置函数和多线程
  • 手把手学会DFS (递归入门)
  • Python直接复制已有的venv虚拟环境以创建新的虚拟环境
  • 【巨人的肩膀】JAVA面试总结(六)
  • C++继承[万字详解]
  • new Function 得到的都是匿名函数,怎么得到一个具名函数对象?
  • TCP UDP详解
  • 【多微电网】含多微电网租赁共享储能的配电网博弈优化调度(Matlab代码实现)
  • [ 系统安全篇 ] window 命令禁用用户及解禁方法
  • 2023 最新发布超全的 Java 面试八股文,整整 1000道面试题,太全了
  • 你是真的“C”——指针进阶知识分享【上篇】
  • Android APP隐私合规检测工具Camille使用
  • 高压放大器在压电智能传感技术的钢结构监测研究中的应用
  • 【数据结构与算法】顺序表和链表
  • MATLAB | 给热图整点花哨操作(三角,树状图,分组图)
  • 零基础搭建Tomcat集群(超详细)