Spring obsługuje dwie różne metody walidacji: walidację Spring i walidację bean JSR-303. Oba mogą być używane przez zdefiniowanie walidatora Spring, który deleguje do innych delegatorów, w tym walidatora bean. Na razie w porządku.
Ale kiedy opisujemy metody, aby faktycznie zażądać walidacji, to już inna historia. Mogę tak opisywać
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Valid @RequestBody TestObject obj, BindingResult result) {
lub w ten sposób
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Validated @RequestBody TestObject obj, BindingResult result) {
Tutaj @Valid to javax.validation.Valid , a @Validated to org.springframework.validation.annotation.Validated . Dokumentacja tego ostatniego mówi
Wariant Valid JSR-303, wspierający specyfikację grup walidacyjnych. Zaprojektowany do wygodnego użytkowania ze wsparciem Springa JSR-303, ale nie specyficznym dla JSR-303.
co niewiele pomaga, ponieważ nie mówi dokładnie, jak to się różni. Jeżeli w ogóle. Wydaje mi się, że oba działają całkiem nieźle.