spring @RefreshScope 刷新原理图
在 spring cloud 中常常会使用到动态配置刷新,如:
@RestController
@RefreshScope
public class ConfigController {
@Value("${name}")
private String name;
}
spring 对于 加了 @RefreshScope 注解的类,使用了一个 scope map 去维护
过程
- 将 加了@RefreshScope 注解 的类加入到 scope map (假定)中
- 当有 RefreshEvent 的时候, 类
RefreshScope会 更新上下文环境,并清除 scope map 中的bean , 使用更新过的属性重新构建一个 bean, 放入到 scope map中 - 当重新 getBean 的时候,又到scope map 中获取, 这样取出来的Bean 就是更新之后的
