Swagger SpringFox不识别JSR303 Bean Validation问题求助
我之前也碰到过一模一样的情况,更新依赖后还是没显示校验信息,你可以从以下几个方面逐一排查:
确保引入了SpringFox的Bean Validator依赖
仅仅更新SpringFox核心依赖还不够,需要额外引入专门支持JSR303注解的插件依赖。如果用Maven的话,在pom.xml里添加:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-bean-validators</artifactId> <version>${springfox.version}</version> </dependency>注意版本要和你使用的SpringFox核心版本保持一致。
在Swagger配置类中导入校验插件配置
打开你的Swagger配置类,添加@Import(BeanValidatorPluginsConfiguration.class)注解,让SpringFox加载校验注解的解析插件:@Configuration @EnableSwagger2 // 如果是SpringFox 3.x版本,换成@EnableOpenApi @Import(BeanValidatorPluginsConfiguration.class) public class SwaggerConfig { // 你的Docket配置等代码 }确认实体类的校验注解使用正确
检查实体类上的注解是不是javax.validation.constraints包下的(比如@NotNull、@Size、@Email等),不要用错了包。另外,注解的message属性最好明确设置,这样文档里才会显示对应的提示信息,比如:public class User { @NotNull(message = "用户ID不能为空") private Long id; @Size(min = 2, max = 20, message = "用户名长度需在2-20字符之间") private String username; }检查Spring Boot版本对应的Validation依赖
如果你的项目用的是Spring Boot 2.3及以上版本,官方默认移除了validation starter,需要手动引入:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>没有这个依赖的话,JSR303注解本身都不会生效,更别说在Swagger文档里显示了。
排查SpringFox版本兼容性
如果你用的是较新的Spring Boot版本,要确保SpringFox版本与之兼容。比如Spring Boot 2.3+建议使用SpringFox 3.x版本,而2.x版本的SpringFox适配Spring Boot 2.2及以下会更稳定。如果版本不匹配,也可能导致校验信息无法正常解析。
按照上面的步骤逐一检查后,应该就能让JSR303的校验信息正常显示在Swagger文档里了。
内容的提问来源于stack exchange,提问作者user1810567




