我正在构建一个微服务系统,并使用springcloud配置通过github-webhook自动刷新进行集中配置。
一切正常,除了在某些情况下,我们需要bean的值在整个过程中保持不变。
例如,这样的代码将导致客户端接收到更新的值,如果在进程中间发生刷新:
@RefreshScope
@ConfigurationProperties
@Component
@Getter
@Setter
public class ServiceConfig {
@Value("${example.property}")
private String exampleProperty;
}
@RestController
@RequestMapping("/department")
public class DepartmentController {
@Autowired
private ServiceConfig serviceConfig;
@GetMapping("/config")
public ResponseEntity<String> getConfig() {
return ResponseEntity.ok(serviceConfig.getExampleProperty());
}
@GetMapping("/config-delayed")
public ResponseEntity<String> getConfigWithDelay() throws InterruptedException {
Thread.sleep(30000L);
return ResponseEntity.ok(serviceConfig.getExampleProperty());
}
}
我知道 String value = serviceConfig.getExampleProperty()
在线程休眠应该工作之前,但是在具有许多方法调用的复杂场景中,将很难控制和维护。
有什么简单的方法可以做到这一点吗?我们正处于项目的设计阶段,所以除了spring之外,其他支持这种行为的配置管理解决方案也很受欢迎。
暂无答案!
目前还没有任何答案,快来回答吧!