Spring 如果新配置无效,则保留旧配置
git中的配置:Spring 如果新配置无效,则保留旧配置,spring,spring-boot,spring-cloud,spring-cloud-config,Spring,Spring Boot,Spring Cloud,Spring Cloud Config,git中的配置: @Component @ConfigurationProperties("person") @RefreshScope @Validated public class PersonConfiguration { @NotBlank public String name; public String getName() { return name; } public void setName(String name)
@Component
@ConfigurationProperties("person")
@RefreshScope
@Validated
public class PersonConfiguration {
@NotBlank
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@RestController
class MessageRestController {
@Autowired
private PersonConfiguration personConfig;
@RequestMapping("/message")
String getMessage() {
return personConfig.getName();
}
}
我有一个rest服务,它有一个使用SpringCloudConfig从git读取的配置。
在配置中,当name不为空并且有人点击/message
端点时,它会正确返回name。如果有人将名称更改为空字符串,并且在调用/message
端点时,会引发绑定异常,因为名称不应为空
如果有人将git config更新为无效值,我如何推迟使用该配置的早期版本,以便
/message
端点仍能使用早期有效的配置正常工作您可以在setter方法中的PersonConfiguration.class中创建验证逻辑。例如,删除@Validated
和@NotBlank
,您只需编写:
person:
name: aaaa
不是当前的功能
@Component
@ConfigurationProperties("person")
@RefreshScope
public class PersonConfiguration {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
if (Strings.isBlank(name)) {
this.name = "default";
} else {
this.name = name;
}
}
}