Сохранить старую конфигурацию, если новая недействительна - PullRequest
0 голосов
/ 06 сентября 2018
@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

У меня есть служба отдыха, и она имеет конфигурацию, которая читается из git с помощью весеннего облачного конфига. В конфигурации, когда имя не пустое, и когда кто-то достигает конечной точки /message, оно возвращает имя правильно. Если кто-то меняет имя на пустую строку и когда вызывается конечная точка /message, он генерирует исключение привязки, поскольку имя не должно быть пустым.

Если кто-то обновит git config до недопустимого значения, как я могу удержать предыдущую версию этого конфига, чтобы конечная точка /message все еще работала с предыдущей действительной конфигурацией

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете создать логику проверки в вашем 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;
        }
   }
}
...