@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
终结点仍可与先前有效的配置一起使用
答案 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;
}
}
}