Spring Boot – @Valid 와 @Validated

By | 2023년 3월 1일
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 을 발생시킨다.

답글 남기기