在nacos 的yaml文件配置字段根据环境配置成对应的第三方服务接口地址,但是发现时不时地,接口会不稳定地宕掉(原先本地都是调本地服务接口)
今天发现,测试服务的接口有数据,而本地服务接口并没有数据。这时候测试环境的接口返回依旧是空,这才发现,nacos配置没有实时生效,每次修改也并没有起到效果(代码更新后就没有重启过服务,便不知道新改的配置没生效)
引入包:
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
方式一:
在@Value注入的变量所在类上添加注解@RefreshScope:
import org.springframework.cloud.context.config.annotation.RefreshScope;
@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
public class AlgoServiceClientImpl implements AlgoService {
@Value("${api.url}")
private String url;
}
proxyMode = ScopedProxyMode.DEFAULT 为了防止出现空指针的问题。
但是出现一个问题就是:
我在controller里面调用service的时候并没有实时更新到nacos里面的配置
于是我在我的controller里面也要写@RefreshScope
这样才能实现热更新