• Nacos配置管理-微服务配置拉取


    创造来源:在学习微服务这部分内容的时候遇到很多bug,改了又改,最后改好了。以下是我修改后实现配置拉取的代码,这里我使用了鉴权,所以配置里面有使用到下面的代码,如果没有配置鉴权则删掉下面代码。新版本的nacos默认没有鉴权需要自己去配置,当然不使用也可以实现拉取。我使用的也是最新版本的springcloud和nacos。

    配置鉴权可以参考我之前这个博文:学习springcloud中Nacos笔记-CSDN博客

    注意!注意!注意!如果没有使用鉴权去yml文件里面删掉这段配置。

    1. username: nacos #用户名
    2. password: nacos #密码

    一、登录Nacos去配置

    ff1155a1ae5843a388f8989903fbe668.png

    07fb96f2da9b4db2bf2782d8e52cb5ca.png

    记得Data Id不要写错

    userservice-public.yaml

    这里附上配置内容:

    1. pattern:
    2. dateformat: yyyy-MM-dd HH:mm:ss

    配置成功后去idea里面拉取。

    二、在user-service的pom.xml里面配置maven信息

    1. <dependency>
    2. <groupId>com.alibaba.cloudgroupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-config
    4. >dependency>
    5. <dependency>
    6. <groupId>org.springframework.cloudgroupId>
    7. <artifactId>spring-cloud-starter-bootstrapartifactId>
    8. <version>4.1.2version>
    9. dependency>

    由于在新版本的nacos里面不再默认支持bootstrap,所以需要自己导入。这里我也选择最新版本,适配springcloud和nacos。

    maven版本推荐可以在这里找:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap

    三、创建bootstrap.yml

    bootstrap.yml会提前于其他yml文件在项目被先读取到nacos。

    1. spring:
    2. application:
    3. name: userservice
    4. profiles:
    5. active: public #环境配置,和nacos配置里面的环境一致,环境用命名空间来命名
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: localhost:8848
    10. config:
    11. file-extension: yaml #文件名后缀
    12. # data-id: userservice-public.yamluserservice-public.yaml
    13. namespace: public
    14. username: nacos #用户名
    15. password: nacos #密码

    9a4b349a51d643ea8b76fbbde44c062d.png

    这里我使用默认的命名空间,注意用户名密码如果不配做鉴权则不用,老版本的nacos也不用(如果没有提示要配置鉴权)

    四、修改user-service的application.yml配置文件

    1. spring:
    2. # application:
    3. # name: userservice #user服务的名称
    4. cloud:
    5. nacos:
    6. # server-addr: localhost:8848 #nacos服务地址
    7. discovery:
    8. namespace: public
    9. # cluster-name: HZ #设置集群名称,这里HZ代指杭州,SH代表上海
    10. username: nacos #用户名
    11. password: nacos #密码

    由于bootstrap.yml会被先读取,nacos里面不用配置也行

    五、去编写接口测试

    //UserController

    1. @Slf4j
    2. @RestController
    3. @RequestMapping("/user")
    4. public class UserController {
    5. @Value(value = "${pattern.dateformat}")
    6. private String dateformat;
    7. @GetMapping("now")
    8. public String now(){
    9. System.out.println(dateformat);
    10. return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    11. }
    12. }

    浏览器:

    f1f452be4216483dbf422bbe53e7c19e.png

    idea:

    63fe2526acf646ab898b5ce849f49a8d.png

     

    成功!!!

    曾经也遇到bug:就是找不到${pattern.dateformat}这个,但是在我按照上述的步骤写完后,出现clean和编译maven,重启nacos服务,后来就成功了,整整搞了一下午的bug。

     

     

     

  • 相关阅读:
    RocketMQ特性--事务消息是个啥,咋发出去的呢?
    STM32G0开发笔记-Platformio+libopencm3-按键和外部中断
    半夜处理了一下ODBC 连接数据库23101的错误
    【自动注入】@Autowired、@Resource的区别是什么
    【MFC】第一个窗口程序(2)
    canvas绘制刮涂层抽奖效果
    带你造轮子,自定义一个随意拖拽可吸边的View
    MySQL join和索引
    idea中maven自带Bundled (Maven 2)和Bundled (Maven 3)的文件目录位置
    【云原生 · Kubernetes】配置 Rancher docker 云平台
  • 原文地址:https://blog.csdn.net/qq_73440769/article/details/137953701