상품 등록 처리 - @ModelAttribute 질문입니다.
229
작성한 질문수 192
1.빨간색 박스끼리 서로 데이터를 받고 초록색끼리 데이터를 받는거 맞나요?
// @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() {
아래 부터는 상품 도메인 개발 강의 질문입니다.
기본생성자는 왜만드는건가요?
@Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { }
3분36초에서 4분까지 싱글톤을 넣기 위해서 static을 사용하시는 이유를 말씀하셨는데요.
그런데 스프링부트는 자동으로 싱글톤 지원하는거 아닌가요?
New를 작성하여 객체를 생성한다는게 자세하게 설명을 들을 수 있을까요?
9분 16초에서 지금은 스프링을 안쓴다고 하셨는데요. 스프링을 쓰는데는 강의에서 언제인가요?
답변 1
0
안녕하세요. zzzzz님, 공식 서포터즈 David입니다.
Model model에 items가 추가됩니다. model.addAttribute(이름, 값)으로 작성됩니다. items라는 속성의 이름을 가지고, items라는 속성의 값으로 itemRepository로 조회된 items가 추가됩니다.
상품 등록 처리 - @ModelAttribute 편 9분 45초에서 나오는데 주석처리된 구문(model.addAttribute..)을 위해 남겨둔 것입니다. 지우셔도 무방합니다.
https://www.inflearn.com/questions/784661/comment/242621 답변을 참고해 주세요.
싱글톤이 보장되기 때문에 static을 사용하지 않아도 됩니다. 다만, 다른 곳에서 new ItemRepository를 생성하게 되면 store 변수가 또 생기기 때문에 이를 방지하기 위해 모든 객체가 공유하는 static 변수로 만드는 것입니다.
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
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





