자바/스프링(Spring)

스프링 @ModelAttribute 에 관하여

류창 2022. 4. 19. 16:54
반응형

@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를 썻는지 다시 확인하는 수고를 더 들일수가있다.

 

뭐든지 코드는 직관성이 제일 중요하다.

 

 

 

반응형