Spring의 세계는 무궁무진하고… 이번엔 validation을 group으로 묶을 수 있는 방법을 찾았다.
검증 항목을 그룹화해서 필요한 곳에서 나눠 검증하는 것을 말한다.
package com.cafe24corp.cdncollectionapi.api.v1.validation;
public class ValidatorGroup {
public interface GroupA {}
public interface GroupB {}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Dto {
@NotEmpty(
groups = { ValidatorGroup.GroupA.class, ValidatorGroup.GroupB.class },
message = "Not empty")
private List<String> names;
@NotBlank(
groups = {
ValidatorGroup.GroupA.class
, ValidatorGroup.GroupB.class
},
message = "The value must not be empty.")
@Pattern(
regexp = "^\\d$",
groups = { ValidatorGroup.GroupA.class, ValidatorGroup.GroupB.class },
message = "You must check value.")
private String Tag;
@Size( min = 1,
groups = { ValidatorGroup.GroupB.class },
message = "You must input at least one.")
private List<@Valid key> keys;
}