服务发现配置

在maven 配置文件中添加 nacos-discover 依赖 服务发现 依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>


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

启动nacos服务,参考 [[01 归档/全栈之巅/后端/Nacos/01 Nacos 安装|01 Nacos 安装]]

如果pom中也添加了spring-cloud-starter-alibaba-nacos-discovery, 发现该服务是可以出现在nacos中的。

Spring Cloud(二):消失的@EnableDiscoveryClient - 知乎

Pasted image 20230701232831

配置中心配置

配置依赖

在配置文件中添加 nacos 配置管理依赖

<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>

在Springboot项目中添加 bootstrap.yml文件

在 Springboot 项目中src/main/resources添加 bootstrap.yml 文件,目的在于:
用于指定nacos的位置,(IP和端口)

其他配置:
例如项目名称, nacos中配置文件的文件类型 ,如yml,text等等

spring:
application:
name: start
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: properties

在nacos页面上配置项目所需要的相关依赖

项目中的 application.name 属性 必须要与nacos配置文件的名称相同(也就是说,如果不指定配置文件名字,想使用默认设置,那么服务名与nacos配置文件名必须相同)

Pasted image 20230701231622

nacos配置文件,必须携带相应的后缀(这里是properties),必须要与bootstrap.yml中配置的后缀一致,即如果配置了 file-extension: properties ,则 nacos中的文件名(data id )必须是start.properties, 后面的properties不能省略,否则会报错

具体使用

未配置 配置中心前 - 测试

在 Springboot 项目中src/main/resources添加**创建 applicatin.properties **

test.user.name = wsc
test.user.age = 100

**创建一个新的 Controller ** - MyUserController

package com.springstart.demo.controller;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

@RestController
public class MyUserController {

@Value("${test.user.name}")
private String name;

@Value("${test.user.age}")
private Integer age;

@RequestMapping("/test")
public ResponseEntity<HashMap<String, Object>> query() {
HashMap<String, Object> map = new HashMap<>();
map.put("name", name);
map.put("age", age);
return ResponseEntity.ok(map);
}
}

测试 请求返回参数

Pasted image 20230701232108

配置 配置中心后 - 验证

创建 Nacos 配置

Pasted image 20230701232133

添加注解
在需要添加自动刷新的Controller类上加入@RefreshScope注解,启动自动刷新nacos的配置

局部方式: 使用@RefreshScope注解标注在使用配置信息的类上

全局方式:先使用@ConfigurationProperties注解将配置读取读取到一个对象上,然后在需要使用配置的类中注入配置对象

Pasted image 20230701232204

重启并测试
Pasted image 20230701232227

查看日志

Pasted image 20230701232310

多环境配置中心配置 TODO

参考

(12条消息) springboot bootstrap.yml nacos配置中心_困知勉行1985的博客-CSDN博客
(12条消息) 【Nacos】一文到底 配置管理详解_nacos配置_上官玺的博客-CSDN博客
(12条消息) springcloud 整合alibaba nacos步骤快速上手教学_spring cloud alibaba 集成nacos具体步骤_The Stubborn Boy的博客-CSDN博客