OpenAPI Generator生成的Spring Boot服务不校验required属性
问题原因
OpenAPI Generator 5.2.1版本默认未开启Bean Validation生成规则,同时Spring Boot 2.3及以上版本默认不内置校验依赖,两个因素共同导致required属性对应的校验逻辑不生效。
解决方案
- 第一步:生成代码时开启校验参数
执行生成命令时追加useBeanValidation和performBeanValidation两个附加属性,示例CLI命令如下:
openapi-generator-cli generate \ -i 你的规范文件路径.yaml \ -g spring \ -o 代码输出目录 \ --additional-properties=useBeanValidation=true,performBeanValidation=true
如果使用Maven/Gradle插件调用生成器,在插件配置的additionalProperties节点下添加上述两个属性即可。开启配置后,生成的AuthLoginRequest类的username和password字段会自动加上@NotNull注解,Controller接口的请求体参数会自动加上@Valid注解触发校验。
- 第二步:补充校验依赖
Spring Boot 2.3及以上版本的spring-boot-starter-web不再内置校验组件,需要手动在项目依赖中添加spring-boot-starter-validation,Maven配置示例:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
- 第三步:版本兼容修复
如果完成上述两步后校验仍未生效,是5.2.1版本的已知bug导致,可将OpenAPI Generator版本升级到5.4.0及以上,该版本已修复required字段不生成@NotNull注解的问题。
内容的提问来源于stack exchange,提问作者Rajdip Patel
相关产品推荐
相关产品推荐

