swagger springfox - проверка bean-компонентов, JSR 303 не распознает

Я следил за этим руководством https://springframework.guru/spring-boot-restful-api-documentation-with-swagger-2/ для создания документации по чванству. Он работает, но когда я пытаюсь добавить некоторую проверку в свой компонент, я не нахожу информации в документации:

@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);
}

Моя сущность с аннотациями валидаций:

@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;

Но когда я проверяю документацию, у меня нет этой проверочной информации:

введите описание изображения здесь

Здесь 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>

Я что-то пропустил в конфигурации? Есть идеи помочь мне?


person user1810567    schedule 18.02.2018    source источник


Ответы (1)


Я нашел решение в этом сообщении: 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>

И вам нужно импортировать файл конфигурации BeanValidatorPluginsConfiguration поверх вашего класса конфигурации swagger:

@Configuration
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration.class)
public class SpringFoxConfig {
  ...
}

Спасибо @ vojtech-ruzicka https://stackoverflow.com/users/4560142/vojtech-ruzicka

person user1810567    schedule 18.02.2018
comment
Чтобы уточнить, он работает из коробки. Просто это необязательно. Не все проекты используют jsr 303 и bean-валидацию. Это задокументировано здесь. - person Dilip Krishnan; 19.02.2018
comment
Похоже, он не распознает специфические аннотации Hibernate, такие как @NotBlunk (только стандартные, JSR 303, @NotNull), знаете ли вы, как решить эту проблему? - person Vahe Harutyunyan; 29.01.2019
comment
@DilipKrishnan, не могли бы вы это прокомментировать? - person Vahe Harutyunyan; 30.01.2019
comment
Он не реализует все аннотации, только @NotNull, @Size и некоторые другие. Однако модель расширяемости плагинов позволяет вам определять свои собственные плагины для достижения того же. - person Dilip Krishnan; 01.02.2019