开发者

springboot bootstrap.yml nacos配置中心问题

目录
  • 一.本地Nacos安装环境: Win7 ,JDK8 ,maven3.5
  • 二.整合Springboot
    • 1.在Springboot项目中添加 bootstrap.yml文件
    • 2.在nacos页面上配置项目所需要的相关依赖
    • 3.在需要添加自动刷新的Controller类上
  • 总结

    一.本地Nacos安装环境: Win7 ,JDK8 ,maven3js.5

    1.下载安装包

    2.启动nacos服务,bin文件下下面startup.cmd

    3.访问 http://localhost:8848/nacos

    二.整合Springboot

    Springb编程客栈oot版本如下

      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>

    nacos的版本

    <!--nacos-->
        <dependency>
          <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       <version>0.2.1.RELEASE</version>
       </dependency>

    1.在Springboot项目中添加 bootstrap.yml文件

    目的在于:用于指定nacos的位置,(IP和端口)其他配置:例如项目名称,nacos中配置文件的文件类型,如yml,text等等

    配置如下:

    Note:这里并没有指定配置文件的名字,因为默认的配置文件名是gabriel.yaml,连接上配置中心后,会自动去获取这个默认的配置文件。

    spring:
     applicatpythonion:
      name: gabriel
     cloud:
      nacos:
       config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml

    2.在nacos页面上配置项目所需要的相关依赖

    注意:

    项目中的 application.name属性 必须要与nacos配置文件的名称相同(也就是说,如果不指定配置文件名字,想使用默认设置,那么服务名与nacos配置文件名必须相同)nacos配置文件,必须携带相应的后缀(这里是yaml),必须要与bootstrap.yml中配置的后缀一致,即如果配置了 file-extension: yaml ,则 nacos中的文件名必须是pythonxxxx.yaml, 后面的yaml不能省略,否则会报错依赖名称必须要正确,这里如果引入了下面的依赖,虽然也会读取配置文件,但是无法启动自动刷新配置的功能(这个问题很坑)

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      <version>0.2.0.RELEASE</version>
    </dependency> 

    配置文件的名字为 gabriel.yaml

    springboot bootstrap.yml nacos配置中心问题

    springboot bootstrap.yml nacos配置中心问题

    3python.在需要添加自动刷新的Controller类上

    加入@RefreshScope注解,启动自动刷新nacos的配置 

    @RestContr开发者_JAVA教程oller
    @RequestMapping(value = "/test")
    @RefreshScope
    public class TestController {
    
      @Value(value = "${service.name:}")
      private String serverName;
    
      /**
      *
      * @return
      */
      @RequestMapping(value = "/get_nacos")
      public String getNacos(){
        System.out.println(serverName);
        return serverName;
      }
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜