从0到1学SpringCloud——06 nacos配置中心及多文件配置

目录

一、前言

二、Nacos配置中心使用

1、pom依赖

2、springcloud版本信息

3、配置nacos链接信息

4、在nacos中创建配置文件

5、测试代码

三、Nacos的配置属性

1、Data ID

2、命名空间

 3、分组

4、动态刷新

四、多文件配置


文章来源地址https://uudwc.com/A/vn8N

一、前言

nacos作为配置中心,经常用到的两个大的功能便是动态刷新和多文件配置,本文也是根据这两点图文讲解。

二、Nacos配置中心使用

1、pom依赖

<!--注册中心客户端 -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<exclusions>
		<!--移除默认版本,默认为2.x版本-->
		<exclusion>
			<groupId>com.alibaba.nacos</groupId>
			<artifactId>nacos-client</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<!--nacos的配置中心的依赖-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
	<exclusions>
		<!--移除默认版本,默认为2.x版本-->
		<exclusion>
			<groupId>com.alibaba.nacos</groupId>
			<artifactId>nacos-client</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>com.alibaba.nacos</groupId>
	<artifactId>nacos-client</artifactId>
	<version>1.4.3</version>
</dependency>

2、springcloud版本信息

<!--依赖库管理-->
<dependencyManagement>
	<dependencies>
		<!-- 声明springBoot版本 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>${spring-boot.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
		<!-- 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>
		<!-- spring cloud alibaba 依赖 -->
		<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>
	</dependencies>
</dependencyManagement>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>

3、配置nacos链接信息

nacos的相关配置建议在bootstrap.properties中,原因参考:

《深入理解为什么nacos配置信息要放到bootstrap.properties「源码分析/图文详解」》

配置信息,这里使用的nacos集群:

#nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=10.211.55.9:8848,10.211.55.10:8848,10.211.55.11:8848
#nacos配置中心地址
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.discovery.server-addr}
#配置文件类型
#spring.cloud.nacos.config.file-extension=properties
#Data ID
spring.cloud.nacos.config.prefix=config-zhufeng-demo.properties

最后一项的Data ID一定要带着文件后缀

4、在nacos中创建配置文件

登录nacos控制台,左侧菜单-配置管理-配置列表,点击右侧 “+” ,开始创建:

 创建的配置文件要带着文件后缀,如:config-zhufeng-demo.properties

在配置内容新增测试数据:

com.zhufeng.name=月夜烛峰

点击发布

配置列表中显示了刚才创建的一个配置文件,默认是在public下。

5、测试代码

/**
 * @ClassName: UserController
 * @Description UserController演示
 * @author 月夜烛峰
 * @date 2022/7/21 14:01
 */
@Slf4j
@RestController
@RequestMapping("user")
public class UserController {

    @Value("${com.zhufeng.name}")
    private String name;

    @RequestMapping("info")
    public String userInfo(){
        return "获取nacos中配置:"+name;
    }
}

配置一个简单的controller,启动项目测试

访问UserController可以正常获取在nacos中配置的属性 ,也即是一个简单的配置中心已经可以用了。

三、Nacos的配置属性

nacos作为配置中心时,有几个重要的属性Data ID、命名空间、分组

1、Data ID

Data ID简单来讲就是一个配置文件的唯一标识,上面我们创建了一个简单的配置文件,命名也比较简单,其实Data ID完整的明明规范如下:

${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

spring.cloud.nacos.config.prefix:配置文件前缀,我们可以通过以下方式进行配置,如果不做配置,默认为服务名称,也就是 spring.application.name:

spring.cloud.nacos.config.prefix=com.config.zhufeng

spring.profiles.active:指定当前环境,比如:dev、test、prod,如果不做配置,配置文件格式如下,连接符号“-”也会自动去掉:

${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}

spring.cloud.nacos.config.file-extension:文件后缀,对应文件格式,目前支持:TEXT、JSON、XML、YAML、HTML、Properties。

为了方便理解,在创建一个新的配置文件:zhufeng-web-user.properties

修改bootstrap.properties中nacos的配置信息:

#配置文件类型
spring.cloud.nacos.config.file-extension=properties
#Data ID
#spring.cloud.nacos.config.prefix=config-zhufeng-demo.properties

这时只保留了文件扩展名 spring.cloud.nacos.config.file-extension

当前服务信息如下:

服务端口
server.port=8081
#服务名称
spring.application.name=zhufeng-web-user

重新启动微服务

再次访问UserController时,name变成了 zhufeng-web-user

也就是根据服务名称去匹配nacos中的配置文件,格式:服务名称+文件后缀

2、命名空间

命名空间可以用来进行相同配置文件的不同环境隔离,比如区分开发、测试、生产环境等。

左侧菜单点击命名空间,创建一个开发用的命名空间:dev

 创建成功后,在配置列表的tab页签中可以看到我们创建的dev。

在dev命名空间下,也创建一个名为config-zhufeng-demo.properties的配置文件,只是将配置内容修改如下,其余配置项相同。

com.zhufeng.name=开发环境

复制dev对应的命名空间的id,在配置文件中指定,修改如下:

#配置文件类型
#spring.cloud.nacos.config.file-extension=properties
#Data ID
spring.cloud.nacos.config.prefix=config-zhufeng-demo.properties
#指定命名空间
spring.cloud.nacos.config.namespace=2e8235ef-7eea-471c-a59b-ad2d15a6279d

指定文件名称,指定命名空间,重新访问UserController

配置项已经改为:开发环境,说明命名空间已经生效

 3、分组

分组主要是用来做业务隔离,比如角色划分、机构划分、学校划分等,默认的分组是 DEFAULT_GROUP

创建一个user分组,修改配置内容为 user用户

列表中有两个分组,但Data Id命名相同,通过不同分组来区分

#Data ID
spring.cloud.nacos.config.prefix=config-zhufeng-demo.properties
#指定命名空间
spring.cloud.nacos.config.namespace=2e8235ef-7eea-471c-a59b-ad2d15a6279d
#指定分组
spring.cloud.nacos.config.group=user

访问UserController

配置信息变为:user用户,已经生效 

4、动态刷新

配置文件的动态刷新作为nacos配置中心的核心功能,需要在代码中添加 @RefreshScope

/**
 * @ClassName: UserController
 * @Description UserController演示
 * @author 月夜烛峰
 * @date 2022/7/21 14:01
 */
//动态刷新配置
@RefreshScope
@Slf4j
@RestController
@RequestMapping("user")
public class UserController {

    @Value("${com.zhufeng.name}")
    private String name;

    @RequestMapping("info")
    public String userInfo(){
        return "获取nacos中配置:"+name;
    }
}

在配置文件中新增动态刷新配置项:

#Data ID
spring.cloud.nacos.config.prefix=config-zhufeng-demo.properties
#指定命名空间
spring.cloud.nacos.config.namespace=2e8235ef-7eea-471c-a59b-ad2d15a6279d
#指定分组
spring.cloud.nacos.config.group=user
#动态刷新
spring.cloud.nacos.config.refresh-enabled=true

默认情况refresh-enabled为false。

这时候修改nacos配置中心里配置文件对应的内容,应用内会自动或许新的配置内容。

四、多文件配置

当环境中引入的中间件较多时,我们可以配置多个文件,方便管理维护,比如数据库、缓存、消息等。

创建config-zhufeng-db.properties

依次创建config-zhufeng-redis.properties、config-zhufeng-kafka.properties,内容:

com.tag.redis=缓存配置信息
com.tag.kafka=消息配置信息

配置信息如下,开启自动刷新

#数据库
spring.cloud.nacos.config.shared-configs[0].data-id=config-zhufeng-db.properties
spring.cloud.nacos.config.shared-configs[0].group=dev
spring.cloud.nacos.config.shared-configs[0].refresh=true
#redis
spring.cloud.nacos.config.shared-configs[1].data-id=config-zhufeng-redis.properties
spring.cloud.nacos.config.shared-configs[1].group=dev
spring.cloud.nacos.config.shared-configs[1].refresh=true
#kafka
spring.cloud.nacos.config.shared-configs[2].data-id=config-zhufeng-kafka.properties
spring.cloud.nacos.config.shared-configs[2].group=dev
spring.cloud.nacos.config.shared-configs[2].refresh=true

UserController代码修改:

@RefreshScope
@Slf4j
@RestController
@RequestMapping("user")
public class UserController {

    @Value("${com.zhufeng.name}")
    private String name;

    @Value("${com.tag.db}")
    private String dbTag;
    @Value("${com.tag.redis}")
    private String redisTag;
    @Value("${com.tag.kafka}")
    private String kafkaTag;

    @RequestMapping("info")
    public String userInfo(){
        return "dbTag:"+dbTag+",<br>redisTag:"+redisTag+",<br>kafkaTag:"+kafkaTag;
    }
}

浏览器访问,输出正常:

原文地址:https://blog.csdn.net/yueyezhufeng/article/details/126285311

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月17日 05:38
Minikube vs. kind vs. k3s vs k3d vs MicroK8s
下一篇 2023年06月17日 05:38