目录
热更新配置问题发现
修改nacos配置文件
出现问题
刷新 http://localhost:8081/user/now 发现并没有变化
解决方案
方式一
在@Value注入的变量所在类上添加注解@RefreshScope
@Slf4j
@RestController
@RefreshScope
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
·····
}
方式二
使用@ConfigurationProperties注解
新建一个类PatternProperties
@Data
@ConfigurationProperties(prefix = "pattern")
@Component
public class PatternProperties {
private String dateformat;
}
修改UserController
@Slf4j
@RestController
//@RefreshScope
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
// @Value("${pattern.dateformat}")
// private String dateformat;
@Autowired
private PatternProperties patternProperties;
@GetMapping("now")
public String now() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));
}
·····
}
测试
修改nacos配置文件
总结
- Nacos配置更改后,微服务可以实现热更新,方式:
- 通过@Value注解注入,结合@RefreshScope来刷新
- 通过@ConfigurationProperties注入,自动刷新
- 注意事项:
- 不是所有的配置都适合放到配置中心,维护起来比较麻烦
- 建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置