springcloud微服务中整合nacos config
微服务接入nacos-config
1. 示例代码
https://github.com/alibaba/spring-cloud-alibaba
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
2. 接入流程
2.1 bootstrap文件(若项目中没有,则新建)
2.1.1 properties格式
# 分组,不配置的话默认为DEFAULT_GROUP。可自定义,用来区分不同应用
spring.cloud.nacos.config.group=op-dictionary
# 扩展名,不配置的话默认为properties。若使用yml格式,则配置为yml。支持properties与yml两种格式
spring.cloud.nacos.config.file-extension=properties
2.1.2 yaml格式
spring:
  cloud:
    nacos:
      config:
        group: op-dictionary
        file-extension: properties
2.2 pom.xml中引入依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.3 src/main/resources目录下的配置文件中增加nacos config的配置(根据env配置)
2.3.1 properties格式
spring.application.name=op-dictionary
spring.profiles.active=local
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.config.server-addr=localhost:8848
# 开关,是否允许使用配置中心,设置为false则关闭config的使用
spring.cloud.nacos.config.enabled=true
2.3.2 yaml格式
spring:
  application:
    name: op-dictionary
  profiles:
    active: local
  cloud:
    nacos:
      discovery:
        enabled: true
        register-enabled: true
        server-addr: localhost:8848
      config:
        enabled: true
        server-addr: localhost:8848
2.4 添加@RefreshScope注解,实现动态刷新
2.4.1 通过@Value获取属性值
@RefreshScope @Slf4j @Service public class WordConfusedInfoServiceImpl implements WordConfusedInfoService { @Value("${xxx.xxx:pp/}") public String ossBaseDir; @Value("${xxx.xx.xx:patch.json}") private String jsonFileKey; }
2.4.2 通过@ConfigurationProperties获取属性值
@RefreshScope @Configuration @ConfigurationProperties(prefix = "xxx") @Data public class PullNewUserConfig { private String activityName; private Boolean status; private String templateUrl; }
2.5 在nacos控制台中进行配置管理
 
2.5.1 Data ID命名
Data ID的拼接格式为:${prefix} - ${spring.profiles.active} . ${file-extension}。
2.5.1.1 prefix
默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置;
spring.cloud.nacos.config.prefix要在bootstrap文件中配置。
2.5.1.2 spring.profiles.active
即为当前环境对应的 profile;若没有profile,则命名为${prefix}. ${file-extension}。
2.5.1.3 file-extension
为配置内容的扩展格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。默认为properties,目前只支持 properties 和 yaml 类型。spring.cloud.nacos.config.file-extension要在bootstrap文件中配置。
2.5.2 group分组,区分不同应用
分组,必填,默认为DEFAULT_GROUP。可自定义,用来区分不同应用。例如:service1,service2。配置了分组之后,在bootstrap文件中增加:spring.cloud.nacos.config.group=op-dictionary
2.5.3 namespace命名空间,逻辑区分不同环境
当前架构中物理区分了不同环境的配置中,因此无须再使用namespace,具体应用参考官方文档。
2.6 配置支持共享的Data Id
多个应用之间可能有共同的配置,如果在各自应用中配置也行,只不过需要配置多份。nacos-config支持公共配置,每个应用中引用公共配置文件即可。
2.6.1 创建Data Id
为了方便识别,定义为common,因为公用,group不设置,使用默认值即可。

2.6.2 在应用中引用
在bootstrap文件中添加引用:spring.cloud.nacos.config.shared-configs
# 配置支持共享的 Data Id
spring.cloud.nacos.config.shared-configs[0].data-id=common.properties
# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号