我们在开发时,时常面临着要随时更改Nacos配置的问题,同时我们的微服务有成百上千的模块,此时要一一重启每个模块是不现实的,此时我们的nacos配置自动刷新脱颖而出
方式一:在@Value注入的变量所在类上添加注解@RefreshScope
pattern:
dateformat: yyyy/MM/dd HH:mm:ss
上面是Nacos的配置文件(这里需要自行配置,如有不会的地方可以留言博主~~)
@Slf4j
@RestController
@RequestMapping("/user")
//@RefreshScope //在@Value注入的变量所在类上添加注解@RefreshScope
//Nacos中的配置文件变更后,微服务无需重启就可以感知
public class UserController {
@Value("${pattern.dateformat}")
private String url;
@GetMapping("/url")
public String getUrl(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern
(url, Locale.CANADA));
}
}
出现此图,然后更改Nacos配置文件
pattern:
dateformat: yyyy年MM月dd HH:mm:ss
然后再 访问localhost:8081/user/url
表示成功~~~~~~~~~~~~~~
方式二:使用@ConfigurationProperties注解
@Data
@Component
@ConfigurationProperties(prefix ="pattern")
public class PatternProperties {
private String dateformat;//这里prefix会和dateformat自动进行拼接
}
注意:这里如果使用了方式一的话,一定要注释掉@RefreshScope,否则会有冲突
同时表现类中改一下url换成patternProperties.getDateformat()
效果和方式一样这里小编就不再演示了!
注意事项:
• 不是所有的配置都适合放到配置中心,维护起来比较麻烦
• 建议将一些关键参数,需要运行时调整的参数放到 nacos 配置中心,一般都是自定义配置
这里小编建议使用使用方二~~~~~
这里小编发现一个小问题,就是有的小伙伴配置了不刷新的有可能就是bootstrap没添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.0.3</version>
</dependency>
制作不易,点赞谢谢~~~~