Table of Contents
Spring Boot – @Valid 와 @Validated
@Valid 와 @Validated 의 차이점
@Valid
@Valid 는 JSR-303 표준 스펙(자바 진영 스펙) 에서 나온 규약이다.
컨트롤러에서만 작동한다.
@Validated
Spring 프레임워크에서 제공하는 어노테이션 및 기능이다.
컨트롤러 뿐만 아니라 서비스 레이어에서도 작동한다.
@Service
@Validated
@RequiredArgsConstructor
public class CompanyCompanyService {
public void update(@Valid CompanyForm dto) {
apiCompanyCompanyHandler.update(dto);
}
}
그룹을 지정할 수 있다.
public interface CompanyValidationGroup {}
public interface AdminValidationGroup {}
@NotEmpty(groups = {CompanyValidationGroup.class, AdminValidationGroup.class} )
private String name;
@NotEmpty(groups = CompanyValidationGroup.class)
private String userId;
@NotEmpty(groups = AdminValidationGroup.class)
private String adminId;
@PostMapping("/admin/company/create")
public String doCreate(@LoginInfo LoginInfoDto loginInfo, ModelMap model, @Validated(AdminValidationGroup.class) CompanyForm dto, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
setAttribute(loginInfo, model, dto);
return "/admin/companyModify";
}
dto.validate();
service.create(dto);
return "redirect:/admin/company/";
}
ConstraintViolationException 을 발생시킨다.