昂首阔步的springfox-Bean验证JSR 303无法识别

use*_*567 4 spring swagger springfox

我按照本教程https://springframework.guru/spring-boot-restful-api-documentation-with-swagger-2/生成了庞大的文档。它正在工作,但是当我尝试在bean中添加一些验证时,我在文档中找不到这些信息:

@ApiOperation(value = "Creates a product",
        notes="Populates a product instance bla bla")
@RequestMapping(value = "/add", method = RequestMethod.POST, produces = "application/json")
public ResponseEntity saveProduct(  @Valid @RequestBody Product product){
    productService.saveProduct(product);
    return new ResponseEntity("Product saved successfully", HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

我的实体带有验证注释:

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
   // @ApiModelProperty(notes = "The database generated product ID")
    private Integer id;
    @Version
   // @ApiModelProperty(notes = "The auto-generated version of the product")
    @NotNull
    private Integer version;
   // @ApiModelProperty(notes = "The application-specific product ID" )
    private String productId;
   // @ApiModelProperty(notes = "The product description")
    @NotBlank
    @Size(max = 50)
    private String description;
   // @ApiModelProperty(notes = "The image URL of the product")
    private String imageUrl;
   // @ApiModelProperty(notes = "The price of the product", required = true)
    @NotNull
    private BigDecimal price;
Run Code Online (Sandbox Code Playgroud)

但是,当我查看文档时,没有这些验证信息:

在此处输入图片说明

在这里https://github.com/springfox/springfox/issues/987,他们说我们需要更新依赖项,这就是我所做的:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我是否错过了配置中的某些内容?有什么办法可以帮助我吗?

use*_*567 9

我在这篇文章中找到了解决方案:http : //vojtechruzicka.com/documenting-spring-boot-rest-api-swagger-springfox/。全部说明:

不幸的是,基于JSR-303的文档无法立即使用,您需要其他依赖项:

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-bean-validators</artifactId>
   <version>2.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

并且您需要在您的灵活配置类之上导入BeanValidatorPluginsConfiguration配置文件:

@Configuration
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration.class)
public class SpringFoxConfig {
  ...
}
Run Code Online (Sandbox Code Playgroud)

谢谢@ vojtech-ruzicka /sf/users/319209971/

  • 只是为了澄清,它开箱即用。只是它是可选的。并非所有项目都使用jsr 303和bean验证。已在[此处](http://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-303)进行了记录。 (2认同)