网站首页 > 精选文章 / 正文
本文将介绍如何在spring cloud的最新版本Hoxton中集成nacos配置中心,实现配置管理,并给出一个注意的坑点。关于集成spring cloud及nacos注册中心并设置负载均衡,在之前的文章已说明。如需看上一篇文章可以看我的主页,或者从下面链接看:
https://www.toutiao.com/i6934971763508036133/
Nacos是Spring Cloud Alibaba 核心组件之一,可以用作 Spring Cloud 的注册中心和配置中心。
本文针对配置中心。
在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。
集成的效果如下
1、引入spring-cloud-starter-alibaba-nacos-config 作为Nacos客户端读取Nacos配置
<!--nacos config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
要保证在父类项目已经引入了nacos的包如下
<!-- 引入spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 引入nacos 注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
父类结构如下
2、在bootstrap.properties或者bootstrap.yml中添加nacos server地址
配置server地址是客户端拉取配置的地址。
spring:
application:
name: zizai-wxwork-admin
cloud:
nacos:
config:
server-addr: 10.10.10.1:8848
file-extension: yaml
namespace: c8d3b947-7c0b-4cc6-9958-280a0b87bcde
group: DEFAULT_GROUP
在管理台创建配置文件的时候,要和项目里的配置文件对应说明如下:
1、server-addr 为配置中心的地址,加上端口号
2、file-extension 在nacos控制台及项目里配置文件的扩展名
3、namespace 是说明配置放到哪个命名空间里
4、group 是在哪一个组里
注意:
服务配置地址 spring.cloud.nacos.config.server-addr 只能配置在bootstrap.properties或者bootstrap.yml里。在其它地方,例如application.yml里是不会生效的。会报如下错误:
NACOS SocketTimeoutException httpGet] currentServerAddr:http://localhost:8848, err : connect timed out
3、在nacos管理台上创建配置文件并设置值
在nacos管理台上创建一个用于客户端读取的值。创建一个文件
其中:
Data Id:zizai-wxwork-admin-local.yaml
Group:DEFAULT_GROUP
配置格式:YAML
配置内容:
user: yaokangjun
效果如下图,md5是自动生成的,不用管:
4、添加读取配置的方法并加入@RefreshScope注解
config方法用于获取配置user的配置。@RefreshScope注解用于spring cloud可以实时刷新配置的值。
创建如下类:
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.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
@RequestMapping(value = "/nacosFeign")
public class NacosFeignController {
private static final Logger logger = LoggerFactory.getLogger(NacosFeignController.class);
@Value("${user:ak}")
private String user;
@RequestMapping(value = "/config", method = RequestMethod.GET)
public String config() {
logger.info("get user config value from nacos: {}", user);
return user;
}
}
5、读取配置
http://localhost:11881/nacosFeign/config
返回:
说明成功读取,可以在nacos控制台上修改user的值,会发现它是会马上生效,并不需要重启应用。
喜欢的朋友评论、点赞、转发、收藏本文。有疑问的在评论区留言。谢谢!
Tags:nacos自动刷新配置
猜你喜欢
- 2024-12-03 SpringBoot+Nacos+Kafka简单实现微服务流编排
- 2024-12-03 Nacos原理最全详解(图文全面总结)
- 2024-12-03 Nacos配置中心和服务的注册发现
- 2024-12-03 java后端:nacos 实现动态配置
- 2024-12-03 SpringCloud Alibaba(四) - Nacos 配置中心
- 2024-12-03 【微服务技术day5-Nacos配置管理】
- 2024-12-03 真香系列:聊聊SpringCloud Nacos服务配置中心
- 2024-12-03 微服务核心组件 Nacos(实战案例+原理)
- 2024-12-03 一文快速上手 Nacos 注册中心+配置中心
- 2024-12-03 Nacos配置共享方案及配置优先级(七)