Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Bean Validation - Groups 본문

인프런/[인프런] 스프링 MVC 2

Bean Validation - Groups

Seung__ 2021. 9. 25. 15:18

동일한 Model Object를 등록할 경우, 수정할 경우 validation을 다르게 적용해보자.

 

 

1. Validation 분리하는 방법


  • BeanValidation의 groups 사용
  • ItemSaveForm, ItemUpdateForm 같은 폼 전송을 위한 별도의 객체 사용(DTO?)

 

 

 

2. Bean Validation Groups


  • BeanValidation Groups기능을 활용하면 검증 기능을 Group으로 나누어 적용이 가능.

 

 

 

 

3. Bean Validation Groups기능 적용

3.1 저장용 group 생성


  • interface 생성
public interface SaveCheck {
}

 

 

3.2 수정용 group 생성


  • interface 생성
public interface UpdateCheck {
}

 

 

3.3 field에 Gorup 지정


@Data
public class Item {


    @NotNull(groups = UpdateCheck.class)
    private Long id;

    @NotBlank(groups = {SaveCheck.class, UpdateCheck.class})
    private String itemName;

    @NotNull(groups = {SaveCheck.class, UpdateCheck.class})
    @Range(min=1000, max=1000000)
    private Integer price;

    @NotNull(groups = {SaveCheck.class, UpdateCheck.class})
    @Max(value = 9999, groups = {SaveCheck.class})
    private Integer quantity;

    public Item() {
    }

    public Item(String itemName, Integer price, Integer quantity) {
        this.itemName = itemName;
        this.price = price;
        this.quantity = quantity;
    }
}

 

 

3.4 Controller에 적용


  • @Validated(value = type) 지정
  • @valid는 groups기능 미지원.
    @PostMapping("/add")
    public String addItem2(@Validated(SaveCheck.class) @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes) {
    @PostMapping("/{itemId}/edit")
    public String edit2(@PathVariable Long itemId, @Validated(UpdateCheck.class) @ModelAttribute Item item, BindingResult bindingResult) {

 

 

4. 정리


  • groups 기능을 사용해서 등록과 수정시에 각각 다르게 검증을 할 수 있음. 
  • 그런데 groups 기능을 사용하니 Item 은 물론이고, 전반적으로 복잡도가 올라감.
  • 사실 groups 기능은 실제 잘 사용되지는 않음.
  • 등록용 폼 객체와 수정용 폼 객체를 분리해서 사용함 ㅋㅋㅋㅋㅋㅋ

 

5. GitHub : 210925 Bean Validation groups


 

GitHub - bsh6463/Validation-V1

Contribute to bsh6463/Validation-V1 development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] 스프링 MVC 2' 카테고리의 다른 글

Form 전송 객체 분리 - 개발  (0) 2021.09.25
Form 전송 객체 분리, DTO  (0) 2021.09.25
Bean Validation - 한계점.  (0) 2021.09.25
Bean Validation - Object Error  (0) 2021.09.25
Bean Validation - Error Code  (0) 2021.09.25
Comments