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

时间:2018-09-06 00:28:29

标签: spring spring-boot spring-cloud spring-cloud-config

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

git中的配置:

person:
    name: aaaa

我有一个休息服务,它的配置是使用spring cloud config从git读取的。 在配置中,当name不为空并且当有人点击/message端点时,它将正确返回名称。如果有人将名称更改为空字符串,并且在调用/message端点时,它将抛出绑定异常,因为名称不应为空。

如果有人将git config更新为无效值,我该如何保留该配置的先前版本,以便/message终结点仍可与先前有效的配置一起使用

1 个答案:

答案 0 :(得分:0)

您可以使用setter方法在PersonConfiguration.class中创建验证逻辑。例如,删除@Validated@NotBlank可以这样写:

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