栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloudAlibaba-3.Nacos作为配置中心

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloudAlibaba-3.Nacos作为配置中心

Nacos作为配置中心 1.在Nacos客户端中创建对应的配置

2.创建一个springboot模块作为测试模块

核心依赖

		
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-config
        

创建配置文件bootstrap.properties
(注意,不是application.properties)

# 服务名,作为配置的Data ID的组成部分
spring.application.name=alibaba-nacos-config-client
server.port=8711
# 配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
// 注意,单纯从nacos拉取配置并不需要@EnableDiscoveryClient注册到服务中心
@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

    @Slf4j
    @RestController
    @RefreshScope
    static class TestController {
		// 通过Value注解从nacos配置中拿数据(可以不加冒号)
        @Value("${xixixixi:}")
        private String title;

        @GetMapping("/test")
        public String hello() {
            return title;
        }
    }

加载顺序:
bootstrap.properties > application.properties
bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
application.yml 可以用来定义应用级别的。

3.测试

如果在Nacos没有对应的配置文件或者对应的配置参数,模块启动会报错,和平时我们在配置文件配少了参数一样一样的

Nacos配置区分项详细说明

1.Data ID

Data ID组成:服务名/spring.cloud.nacos.config.prefix+配置文件拓展名
如果在模块中的bootstrap.properties中没有配置spring.cloud.nacos.config.prefix参数,那就默认用服务名作为Data ID前缀

2.Group

Group:分组参数一般用来做配置细分,比如区分开发用配置和生产用配置
如果在模块中的bootstrap.properties中没有指定spring.cloud.nacos.config.group参数,默认分组为DEFAULT_GROUP



3.spring.profiles.active
以上两个参数都是显式参数,其实最原始的解析为:

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

在模块中指定spring.profile.active参数,作为配置区分参数

spring.application.name=alibaba-nacos-config-client
spring.profiles.active=DEV
server.port=8711
spring.cloud.nacos.config.prefix=config-client
spring.cloud.nacos.config.file-extension=properties
# spring.cloud.nacos.config.group=DEV
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

4.命名空间namespace

Nacos可以用过三个配置区分项区分细化配置
但是有时候需要创建两套同名同参的配置,这时候就要用namespace来分隔,命名空间相当于一个配置容器,两个容器间的配置可以相同
Nacos的默认命名空间是public

尝试新建一个命名空间

在新空间中创建配置

bootstrap.properties中指定命名空间id

spring.application.name=alibaba-nacos-config-client
spring.profiles.active=DEV
server.port=8711
# 指定命名空间id
spring.cloud.nacos.config.namespace=b06c6532-0e69-4317-8789-ed6ee5aa39ef
spring.cloud.nacos.config.prefix=config-client
spring.cloud.nacos.config.file-extension=properties
# spring.cloud.nacos.config.group=DEV
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

测试:

注意:不论用哪一种方式实现。对于指定环境的配置(spring.profiles.active=DEV、spring.cloud.nacos.config.group=DEV_GROUP、spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a),都不要配置在应用的bootstrap.properties中。而是在发布脚本的启动命令中,用-Dspring.profiles.active=DEV的方式来动态指定,会更加灵活!

Nacos多个配置文件加载

很多情况下,我们有一些公共配置例如日志配置等需要抽取出来提高复用率,这就需要模块从Nacos中加载多个配置文件的内容

方式一:List形式指定多个配置文件

bootstrap.properties:

spring.application.name=alibaba-nacos-config-client
spring.profiles.active=DEV
server.port=8711
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 指定命名空间id
#spring.cloud.nacos.config.namespace=b06c6532-0e69-4317-8789-ed6ee5aa39ef
spring.cloud.nacos.config.prefix=config-client
spring.cloud.nacos.config.file-extension=properties
# spring.cloud.nacos.config.group=DEV
# 加载额外配置文件
spring.cloud.nacos.config.ext-config[0].data-id=log-config.properties
spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=pay-config.properties
spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.ext-config[1].refresh=true

方式二:共享

bootstrap.properties

spring.application.name=alibaba-nacos-config-client
spring.profiles.active=DEV
server.port=8711
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 指定命名空间id
#spring.cloud.nacos.config.namespace=b06c6532-0e69-4317-8789-ed6ee5aa39ef
spring.cloud.nacos.config.prefix=config-client
spring.cloud.nacos.config.file-extension=properties
# spring.cloud.nacos.config.group=DEV
# 共享配置
spring.cloud.nacos.config.shared-dataids=log-config.properties,pay-config.properties
spring.cloud.nacos.config.refreshable-dataids=log-config.properties,pay-config.properties

spring.cloud.nacos.config.shared-dataids参数用来配置多个共享配置的Data Id,多个的时候用用逗号分隔
spring.cloud.nacos.config.refreshable-dataids动态刷新,多个Data Id之间用逗号隔开。如果没有明确配置,默认情况下所有共享配置都不支持动态刷新

配置加载优先级

A: 通过spring.cloud.nacos.config.shared-dataids定义的共享配置
B: 通过spring.cloud.nacos.config.ext-config[n]定义的加载配置
C: 通过原始规则(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group)加载配置
加载顺序:A > B > C
因为后加载的配置会覆盖先前加载的配置,因此
优先级:C > B > A

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号