赞
踩
核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
创建配置文件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 可以用来定义应用级别的。
如果在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
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中加载多个配置文件的内容
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。