You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot配置类@NotBlank校验报错:无对应String类型校验器

解决Spring Boot配置类中@NotBlank校验器找不到的问题

哦,这个问题我之前踩过坑!你遇到的HV000030错误,本质不是你代码写错了(毕竟官方文档确实说这么用是对的),而是校验器的依赖没配置到位,导致Spring找不到@NotBlank对应的校验实现。

核心原因

从Spring Boot 2.3版本开始,spring-boot-starter-web不再默认包含校验模块的依赖了。如果你的项目是2.3+版本,必须手动引入校验starter,否则Hibernate Validator(Spring默认的校验器实现)不会被加载,自然找不到@NotBlank的处理逻辑。

解决方案

1. 引入校验starter依赖

根据你的构建工具,添加对应的依赖:

  • Maven:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  • Gradle:
implementation 'org.springframework.boot:spring-boot-starter-validation'

如果你的Spring Boot版本低于2.3,那这个依赖已经包含在spring-boot-starter-web里了,这时候要检查是不是手动排除了校验相关的依赖,或者存在版本冲突。

2. 避免手动指定Hibernate Validator版本

如果你之前手动引入了hibernate-validator依赖,建议删掉,改用spring-boot-starter-validation来管理版本——Spring Boot的starter会自动适配兼容的版本,避免出现版本不匹配导致的校验器无法初始化问题。

3. 验证配置是否生效

重启项目后,故意不配置test.uri(或者设为空字符串),如果项目启动时抛出BindException,说明校验已经正常工作了,这就没问题了。

补充说明

你的配置类代码本身是完全正确的:

  • @Validated开启Spring的校验支持
  • @ConfigurationProperties绑定配置
  • @NotBlank约束String类型的uri不为空或空白字符串

所以只要把依赖补全,问题就能解决啦!

内容的提问来源于stack exchange,提问作者Myroslav

火山引擎 最新活动