MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

spring cloud中集成nacos配置中心

2024-12-03 15:25 huorong 精选文章 14 ℃ 0 评论

本文将介绍如何在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自动刷新配置

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言