莫大人

2、nacos

1Nacos官方文档的说明已经很清晰了。

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

2、前提条件

https://nacos.io/zh-cn/docs/quick-start.html

3、下载nacos

https://github.com/alibaba/nacos/releases

我这里下载1.4.1版本

4、启动nacos

startup.cmd -m standalone

 

5、配置中心

5.1、单配置

5.1.1、创建项目结构如下

 

5.1.2、在guo中配置依赖管理

 

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

在项目 guo-config 添加依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${spring-cloud.alibaba}</version>
        </dependency>

为了方便测试,添加web的依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

这里需要注意的是几个版本的关系

请参考: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

我这里使用 Spring Cloud Hoxton.SR8,Spring Cloud Alibaba 2.2.5.RELEASE,Spring Boot 2.3.2.RELEASE

 

 

 在项目guo-config添加配置文件bootstrap.properties

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=example
spring.cloud.nacos.config.file-extension=yml
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

 在nacos添加配置文件 example.yml, 这里我们没有配置 spring.cloud.nacos.config.prefix,spring.profiles.active 所以nacos配置文件名称就会变成 example.yml

编写配置测试类 @RefreshScope 注解将自动刷新配置

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    /**
     * http://localhost:8080/config/get
     */
    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}

启动

@SpringBootApplication
public class NacosConfigApplication {

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

启动发现这样一行日志: Ignore the empty nacos configuration and get it based on dataId[example.yaml] & group[DEFAULT_GROUP]

表示没有找到配置文件 example.yaml,查看配置文件,发现我们配置的文件后缀为 yaml ,而我们在nacos中的配置文件为 example.yml 所以无法找到naocs配置。修改 bootstrap.properties 中 spring.cloud.nacos.config.file-extension=yml 后重启正常。

 

调用 http://localhost:8080/config/get 返回结果 false

修改nacos配置【useLocalCache: true】重新访问结果 true

 

5.2、多配置 编写配置文件 bootstrap.yml

 

spring:
  application:
    name: example
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        #第一种配置方式
        ext-config:
          - data-id: app.properties
            group: DEFAULT_GROUP
            # refresh: true
          - data-id: jdbc.properties
            group: DEFAULT_GROUP
          - data-id: redis.properties
            group: DEFAULT_GROUP
        #第二种配置方式,不刷新
        shared-dataids: yiwuxia.properties
        #第二种配置方式,自动刷新配置
        refreshable-dataids: test-one.properties, test-two.properties

 

posted on 2021-06-28 11:12  莫大人  阅读(91)  评论(0编辑  收藏  举报

导航