当前位置:   article > 正文

SpringCloudAlibaba-3.Nacos作为配置中心_springcloud继承nacos几可以不用加@enablediver

springcloud继承nacos几可以不用加@enablediver

Nacos作为配置中心

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

在这里插入图片描述

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

核心依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  • 1
  • 2
  • 3
  • 4

创建配置文件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
  • 1
  • 2
  • 3
  • 4
  • 5
// 注意,单纯从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;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

加载顺序:
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}
  • 1

在模块中指定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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

测试:
在这里插入图片描述

注意:不论用哪一种方式实现。对于指定环境的配置(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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

方式二:共享

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/526293
推荐阅读
相关标签
  

闽ICP备14008679号