[SPRING] Spring에서 @Valid와 @Validated의 차이점
SPRINGSpring에서 @Valid와 @Validated의 차이점
Spring은 두 가지 유효성 검사 메소드 인 Spring 유효성 검사와 JSR-303 bean 유효성 검사를 지원합니다. 둘 모두는 bean validator를 포함한 다른 위임자에게 위임하는 Spring 유효성 검사기를 정의함으로써 사용될 수 있습니다. 여태까지는 그런대로 잘됐다.
그러나 실제로 유효성 검사를 요청하는 메소드에 주석을 달 때, 그것은 또 다른 이야기입니다. 나는 이렇게 주석을 달 수있다.
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Valid @RequestBody TestObject obj, BindingResult result) {
또는 이와 같이
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Validated @RequestBody TestObject obj, BindingResult result) {
여기에서 @Valid는 javax.validation.Valid이고 @Validated는 org.springframework.validation.annotation.Validated입니다. 후자에 대한 문서는 말한다
그것은 그것이 어떻게 다른지 정확히 말하지 않기 때문에별로 도움이되지 않습니다. 만약 그렇다면. 둘 다 나를 위해 꽤 잘 작동하는 것 같습니다.
해결법
-
==============================
1.문서에서 인용 한 것처럼 "유효성 검증 그룹", 즉 유효성이 검증 된 bean의 필드 그룹을 지원하기 위해 @Validated가 추가되었습니다. 이것은 첫 번째 단계에서 이름, 전자 메일 등을 확인할 수있는 여러 단계 양식에서 사용할 수 있으며 다음 단계에서 다른 필드를 사용할 수 있습니다.
문서에서 인용 한 것처럼 "유효성 검증 그룹", 즉 유효성이 검증 된 bean의 필드 그룹을 지원하기 위해 @Validated가 추가되었습니다. 이것은 첫 번째 단계에서 이름, 전자 메일 등을 확인할 수있는 여러 단계 양식에서 사용할 수 있으며 다음 단계에서 다른 필드를 사용할 수 있습니다.
이것이 @Valid 어노테이션에 추가되지 않은 이유는 java 커뮤니티 프로세스 (JSR-303)를 사용하여 표준화 되었기 때문에 시간이 걸리고 Spring 개발자는 사람들이이 기능을 더 빨리 사용할 수 있기를 원했기 때문입니다.
이 jira 티켓으로 이동하여 주석이 어떻게 생성되었는지 확인하십시오.
-
==============================
2.보다 직선적 인 대답. 여전히 "검증 그룹"이 무엇인지 모르는 사람들에게.
보다 직선적 인 대답. 여전히 "검증 그룹"이 무엇인지 모르는 사람들에게.
@Valid 유효성 검사 사용법
제어 장치:
@RequestMapping(value = "createAccount") public String stepOne(@Valid Account account) {...}
양식 객체 :
public class Account { @NotBlank private String username; @Email @NotBlank private String email; }
@ Validated Validation Group의 사용법 출처 : http://blog.codeleak.pl/2014/08/validation-groups-in-spring-mvc.html
제어 장치:
@RequestMapping(value = "stepOne") public String stepOne(@Validated(Account.ValidationStepOne.class) Account account) {...} @RequestMapping(value = "stepTwo") public String stepTwo(@Validated(Account.ValidationStepTwo.class) Account account) {...}
양식 객체 :
public class Account { @NotBlank(groups = {ValidationStepOne.class}) private String username; @Email(groups = {ValidationStepOne.class}) @NotBlank(groups = {ValidationStepOne.class}) private String email; @NotBlank(groups = {ValidationStepTwo.class}) @StrongPassword(groups = {ValidationStepTwo.class}) private String password; @NotBlank(groups = {ValidationStepTwo.class}) private String confirmedPassword; }
from https://stackoverflow.com/questions/36173332/difference-between-valid-and-validated-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] MongoDB와 최대 절전 모드 (0) | 2019.01.25 |
---|---|
[SPRING] Java EE에서 CDI를 사용해야하는 이유 (0) | 2019.01.25 |
[SPRING] Spring Security 2.06에서 커스텀 AuthenticationProvider 구현하기 (0) | 2019.01.25 |
[SPRING] MySql과의 연결이 자동으로 중단됩니다. Connector / J를 올바르게 구성하는 방법? (0) | 2019.01.25 |
[SPRING] Spring 어노테이션 @Controller는 @Service와 같은가요? (0) | 2019.01.25 |