@ModelAttribute??
@ModelAttribute는 요청받은 개체 속성들을 받은후,
추상화된 개체로 모델을 만든뒤 HTML파일로 자동으로 알아서 반환해준다.
-> 말로하니 느낌이 확 안 와닫는다.
ModelAttribute의 특징을 제대로 알려면 우선 @RequestParam과 비교를 한번 해보자.
@RequestParam으로 요청받아내기
객체 Item 에 존재하는 속성 3개 itemName,price,quantity 3 요소를 받는요청이다.
@RequestParam을 사용하면 그림과같이 Item에 존재하는 모든 속성을 모두 작성하고 모델에 집어넣어야한다.
이건 간단한 객체라그렇지, 실제 실무처럼 속성이 10개가 넘어가면 파라미터단락이 아주 길어질것이다.
이걸 조금 더 간결하고 스마트하게 줄여보자 하고자 나온것이 @ModelAttribute다.
@ModelAttribute로 요청받아내기
놀라지마시라 이 코드는 바로 앞에 @RequestParam으로짠 코드와 동일한 기능을한다.
아까 앞서 말한 특징이 1.속성들을 모아 개체로 만든다 2. 개체를 자동으로 모델에담아 HTML로 보낸다.
1번에의해 불필요한 Item속성들을 쓸필요가 없어졋고, 새로 Item을 선언할 필요도 없어졋다.
이 @ModelAttribute는 생략이 가능하다. 하지만, 필자는 생략을 추천하지않는다.
이유는 2가지
1. @RequestParam도 생략이 가능하여 혼동하기가 쉽다.
2. @ModelAttribute를 입력하여 직관적으로 보여주기위함.
내가 이 코드엔 @ModelAttribute를 썻다라는걸 직관적으로 보여주는걸 추천한다.
괜히 줄이겟다고 생략하면 @RequestParam을 쓴지 @ModelAttribute를 썻는지 다시 확인하는 수고를 더 들일수가있다.
뭐든지 코드는 직관성이 제일 중요하다.
'자바 > 스프링(Spring)' 카테고리의 다른 글
스프링 타임리프(Thymleaf) 한눈에 정리하기 (0) | 2022.05.18 |
---|---|
스프링 Redirect를 활용해보자 (0) | 2022.04.19 |
스프링에서 로그(log) 찍기 (0) | 2022.04.19 |
스프링: 영속 컨텍스트 (Persistence Context) (0) | 2022.01.08 |
웹 스코프(Scope)와 프록시 기술 (0) | 2021.12.31 |