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

 

posted @ 2023-03-02 20:02  江湖凶险  阅读(251)  评论(0)    收藏  举报