inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품 등록 처리 - @ModelAttribute 질문입니다.

229

zzzzz

작성한 질문수 192

0

model지칭.png1.빨간색 박스끼리 서로 데이터를 받고 초록색끼리 데이터를 받는거 맞나요?

 

//    @PostMapping("/add")
    public String addItemV2(@ModelAttribute("item") Item item, Model model) {

        itemRepository.save(item);
//      model.addAttribute("item", item); //자동 추가, 생략 가능

        return "basic/item";
    }

2. 위에 코드에서 ModelAttribute로 모델을 받아오는데 Model model이 부분은 또 왜쓰는건가요?

 

 

@Data
public class Item {

    private Long id;
    private String itemName;
    private Integer price;
    private Integer quantity;

    public Item() {
    

아래 부터는 상품 도메인 개발 강의 질문입니다.

  1. 기본생성자는 왜만드는건가요?

     

    @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { }

  2. 3분36초에서 4분까지 싱글톤을 넣기 위해서 static을 사용하시는 이유를 말씀하셨는데요.

    그런데 스프링부트는 자동으로 싱글톤 지원하는거 아닌가요?

    New를 작성하여 객체를 생성한다는게 자세하게 설명을 들을 수 있을까요?

  3.  

    9분 16초에서 지금은 스프링을 안쓴다고 하셨는데요. 스프링을 쓰는데는 강의에서 언제인가요?

spring mvc

답변 1

0

David

안녕하세요. zzzzz님, 공식 서포터즈 David입니다.

  1. Model model에 items가 추가됩니다. model.addAttribute(이름, 값)으로 작성됩니다. items라는 속성의 이름을 가지고, items라는 속성의 값으로 itemRepository로 조회된 items가 추가됩니다.

  2. 상품 등록 처리 - @ModelAttribute 편 9분 45초에서 나오는데 주석처리된 구문(model.addAttribute..)을 위해 남겨둔 것입니다. 지우셔도 무방합니다.

  3. https://www.inflearn.com/questions/784661/comment/242621 답변을 참고해 주세요.

  4. 싱글톤이 보장되기 때문에 static을 사용하지 않아도 됩니다. 다만, 다른 곳에서 new ItemRepository를 생성하게 되면 store 변수가 또 생기기 때문에 이를 방지하기 위해 모든 객체가 공유하는 static 변수로 만드는 것입니다.

  5. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1 강의부터 스프링을 활용한 테스트가 진행되오니 참고해 주세요.

감사합니다:)

0

zzzzz

1번 추가 질문입니다. model.addAttribut("items",items) 즉 items가 2번 나와서 어느 items를 말씀하시는건지 구분이 힘든데요. 첫번째 "items",와 두번째 items를 " "로 구분시에 아래처럼 이해해도 되나요?

Model model에 "items"(첫번째)가 추가됩니다. model.addAttribute(이름, 값)으로 작성됩니다. items(두번째)라는 속성의 이름을 가지고, items(두번째)라는 속성의 값으로 itemRepository로 조회된 items(두번째)가 추가됩니다.

 

2번 추가질문입니다.

Model model 이거를 지우라는 말씀이신거죠?

@ModelAttribute("item") 와 Model model 이부분이 같은 역할인가요?

0

나무늘보

안녕하세요 zzzzz님!

"items" 는 Model 에 어떤 이름으로 값을 담을건지 결정하는 키 입니다. 다른 키로 변경해도 괜찮습니다. 만약 물건을 맡기려고 하는데 맡긴사람 이름을 "인프런"이라고 했다고 하고 이를 코드로 표현하면
model.addAttribute("인프런", items);
"인프런"이라는 키로 items를 맡겨놓은 형태입니다. 그리고 이렇게 맡겨놓은 값을 쓰려면 또한 "인프런"이라는 키를 이용해야 합니다. 맡겨놓은 키를 찾을 때도 그대로 사용해야 합니다. 즉 Model에 값을 담은 키를 변경하였다면, 이를 사용하는 코드도 수정해야 합니다.

 

@ModelAttribute, Model은 이름은 비슷하나 사용처가 다릅니다.

@ModelAttribute는 클라이언트가 서버에 요청한 여러 파라미터(문자열)을 객체로 변환하여 사용하기 쉽도록 해주는 어노테이션이며, Model은 백엔드에서 HTML파일 생성을 모두 담당할 때 필요합니다. 컨트롤러 메서드에서, HTML파일을 생성하는 템플릿에 필요한 값을 전달하기 위한 박스라고 생가해주세요.

servlet과 container에 대한 질문입니다

0

25

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

64

1

jsp 의존성 수정 요청

0

80

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

143

1

save() 메서드 문의

0

67

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

101

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

97

1

RequestMapping을 이용한 핸들러, 어댑터

0

119

2

save 후 결과화면

0

89

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

178

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

100

3

파일 오픈 시

0

70

1

스프링 배치 관련

0

78

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

96

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

79

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

75

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

77

2