Проверка @RequestParam в Spring REST controller не работает

#spring #validation #spring-restcontroller

#весна #проверка #spring-restcontroller

Вопрос:

Я хочу проверить параметры моего метода GET. Я добавил эту зависимость:

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
 

Я написал этот контроллер:

 import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.Min;

@Validated
@RestController
public class TestController {

    @GetMapping(value = "/test")
    public String getTest(@Min(value = 3, message = "min 3")
                          @RequestParam("hz") String hz,
                          @RequestParam("hz1") String hz1) {
        return "test";
    }
}
 

Я добавил конфигурацию:

 import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;

@Configuration
public class Config {
    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
}
 

запрос работает нормально! Почему?

 http://localhost:8088/test?hz=12amp;hz1=123
 

Комментарии:

1. Вы можете выполнить проверку внутри своего сервиса, это более подходит

2. Нет, чем больше логики мы сбрасываем внутри сервисов, тем больше она становится подверженной ошибкам, в то время как простая логика проверки, если отбросить ее из самого контроллера, у нас будет чистый и минимальный код на уровне сервиса!

3. не могли бы вы показать ошибку?

4. @ silentsudo какая ошибка? Мой вопрос был об отсутствии ошибки. Я ожидал любой ошибки проверки. Я думаю, что решил эту проблему, и я добавлю ответ позже