Quarkus实战:专为Kubernetes而优化的Java解决方案
上QQ阅读APP看书,第一时间看更新

4.12 验证配置值

问题

如何验证配置值是否合法?

解决方案

当使用@ConfigProperty注解在类中注入一个属性值时,可以使用Bean Validation规范来验证该属性值是否有效。

Bean Validation规范允许你使用注解对对象设置约束。Quarkus集成了Eclipse MicroProfile Configuration规范和Bean Validation规范,你可以一起使用它们来校验一个配置值是否符合某些标准。这个校验是在启动时执行的,如果有任何不合法行为,控制台中都会显示一个错误信息,并中止启动程序。

你需要做的第一件事是注册Quarkus Bean Validation依赖。可以通过编辑pom.xml或者在项目的根目录下运行下面的Maven command来手动完成:

之后,你需要创建一个配置对象,这在前面已经学习过。在接下来的例子中,对greeting.repeat配置属性设置了一个约束,因此不能设置范围1~3(含)以外的数值。为了验证整数范围,使用了以下Bean Validation注解:javax.validation.constraces.Max和javax.validation.constraces.Min。打开org.acme.quickstart.GreetingConfiguration.java并添加Bean Validation注解:

❶接受的最小值

❷接受的最大值

打开src/main/resources/application.properties文件,将greeting.repeat配置属性设置为7:

启动应用程序,你会看到一个错误消息,告知其中一个配置值违反了定义的约束条件:

讨论

在这个例子中,你已经看到了Bean Validation规范的简单介绍,以及一些可以用来验证字段的注解。然而,Hibernate Validation和所使用的Bean Validation实现支持很多约束条件,比如@Digits、@Email、@NotNull和@NotBlank。