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

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

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

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

复制代码
        username: nacos #用户名
        password: nacos #密码

一、登录Nacos去配置

记得Data Id不要写错

复制代码
userservice-public.yaml

这里附上配置内容:

复制代码
pattern:
  dateformat: yyyy-MM-dd HH:mm:ss

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

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

XML 复制代码
        <!--nacos配置管理依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId
        ></dependency>
       
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-                    starter-bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.1.2</version>
        </dependency>

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

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

三、创建bootstrap.yml

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

复制代码
spring:
  application:
    name: userservice
  profiles:
    active: public #环境配置,和nacos配置里面的环境一致,环境用命名空间来命名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        file-extension: yaml #文件名后缀
#        data-id: userservice-public.yamluserservice-public.yaml
        namespace: public
        username: nacos #用户名
        password: nacos #密码

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

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

复制代码
spring:
#  application:
#    name: userservice #user服务的名称
  cloud:
    nacos:
#      server-addr: localhost:8848 #nacos服务地址
      discovery:
        namespace: public
#        cluster-name: HZ #设置集群名称,这里HZ代指杭州,SH代表上海
        username: nacos #用户名
        password: nacos #密码

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

五、去编写接口测试

//UserController

java 复制代码
@Slf4j
@RestController
@RequestMapping("/user")
public class  UserController {

    @Value(value = "${pattern.dateformat}")
    private String dateformat;

    @GetMapping("now")
    public String now(){
        System.out.println(dateformat);
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }
}

浏览器:

idea:

成功!!!

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

相关推荐
不得了zz4 小时前
04-Spring AI Alibaba ReactAgent 生产级实践:工具调用、结构化输出、HITL 与上下文管理
java·ai编程·springaialibaba
猿究院_夏燊4 小时前
SpringMVC 到底是怎么干活的?
java·网络·职场和发展
鶴哥只手遮天4 小时前
Spring Framework 7.0.9 深度剖析-05-配置元数据解析:XML、注解与 JavaConfig
java·后端·开源
aichitang20244 小时前
QCU 2.0.0:补齐 Windows、Linux 与 GNOME Wayland
linux·运维·windows·ai·agent·ai编程
Lv_沐曦4 小时前
Linux 上的Web文件管理器-filebrowser
linux·运维·服务器
NGINX开源社区4 小时前
与我们交流:NGINX Gateway Fabric 与 NGINX Ingress Controller 社区会议
java·服务器·前端
鶴哥只手遮天4 小时前
Spring Framework 7.0.9 深度剖析-16-异步与调度
java·后端·开源
科技每日热闻4 小时前
电气设备综合维保服务商怎么选?从预防性维护到数字化运维,看懂五个关键能力——企业选择维保合作伙伴,不能只看“坏了能不能修”,更要看能否覆盖资产与系统的长期运营
大数据·运维·人工智能
十年Java程序媛4 小时前
Java 多线程基础与锁机制|进程线程、synchronized、volatile、Lock 面试全梳理
java·spring boot·面试
弈栈录4 小时前
大模型服务抽象:兼容 OpenAI、通义千问与本地模型
java·后端·架构