Spring 如果新配置无效,则保留旧配置

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)

git中的配置:

@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;
        }
   }
}