在nacos中实现自动热部署用@RefreshScope出现空指针异常。

1:首先先看到nacos中配置得代码

2在服务中导入,既然要使用到nacos中得配置,所以要在项目运行application.yml之前要先拿到配置。

解决办法:

1:进行导包,加入nacos管理依赖。

<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2:创建bootstrap.yml文件,将application.yml中关于nacos中得配置换到bootstrap.yml中,因为 bootstrap.yml文件优先级高于application.yml。

spring:
  application:
    name: userservice #1:服务名
  profiles:
    active: dev #2:开发环境
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos地址
      config:
        file-extension: yaml #3:文件后缀名。

3:在controller中获得配置文件中拿到得数据

//加载nacos配置文件

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

    @GetMapping("now")
    private String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }

在这里呢就会出现问题,视频中时在含有@Value 的controller加入@RefreshScope注解,但是再次运行项目,访问接口,就会出现空指针异常问题。

这里呢个人经过查阅资料,发现@RefreshScope他的默认代理方式是CGLIB,但是spring中默认的代理也是CGLIB,就相当于它被代理了两次,这样可能就会导致数据消失。

解决办法:

@RefreshScope改为:@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小泽不会Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值