게시글
질문&답변
2024.04.30
@ModelAttribute @RequestParam
안녕하세요. gomdole03님, 공식 서포터즈 y2gcoder입니다. 간단하게 말씀드리면 하나씩 다 따로 매핑해주기 위해서는 @RequestParam, 폼 객체를 한꺼번에 매핑해주기 위해서는 @ModelAttribute 를 사용하시면 됩니다! 이 때는 MultipartFile 하고는 상관없이 @RequestParam, @ModelAttribute 의 차이만 놓고 사용하셔도 됩니다 🙂 아마 두 예제를 비교해보시면 이해하실 것 같습니다 🙂 (사진) (사진)(사진) 감사합니다.
- 0
- 1
- 16
질문&답변
2024.04.29
@Configuration 자동 설정?
안녕하세요. RealTone님, 공식 서포터즈 y2gcoder입니다. 강의 영상과 자료를 보시면 (사진) 이런식으로 @SpringBootApplication()의 scanBasePackages 속성을 이용해서 스캔할 범위를 제한해주면서 hello.config 패키지의 빈들을 기본적으로 스캔 대상에 들어가지 않도록 설정한 모습을 보실 수 있습니다! RealTone님은 이런한 스캔 범위 제한을 해두지 않아 중복으로 빈을 등록하려고 해 오류가 발생하는 것으로 보입니다 :) 감사합니다.
- 0
- 3
- 31
질문&답변
2024.04.29
자바 언어 없음
안녕하세요. 민승님, 공식 서포터즈 y2gcoder입니다. (사진)직접 맥에 Intellij 커뮤니티 버전을 설치해서 New Project 를 한 캡처본입니다! 맥과 윈도우의 차이 때문에 경로가 서로 다르게 표시되고는 있으나 JDK도 22로 잘 잡혀 계신 것 같습니다. 강의를 보고 차근차근 진행해보시면 될 것 같습니다! 감사합니다.
- 0
- 1
- 27
질문&답변
2024.04.29
검증1 - Validation-검증 직접 처리 - 개발 질문입니다.
안녕하세요. zzzzz님, 공식 서포터즈 y2gcoder입니다. @ModelAttribute("item") Item item 은 간단하게 말씀드리면 "HTTP 요청을 보고 Item 객체에 동일한 필드가 있으면 매핑하고 Item item 객체로 만들어서 메서드에서 사용할 수 있게 넣어줘! 그리고 모델에도 넣어줬으면 좋겠는데 모델에 넣을 때 key 값은 'item'으로 해줘!" 입니다. Model model은 유효성 검증에 실패했을 때 만든 errors 를 모델에 넣어 반환하는 뷰에 데이터로 넣어주기 위해 사용했습니다! 위의 작성해주신 코드를 천천히 다시 보시면 에러 코드들은 Map errors 에 넣고, 그 errors는 모델에 담겨 뷰로 반환되는 것을 보실 수 있습니다. 이것을 @ModelAttribute은 model.addAttribute가 자동으로 생성되는데요. 큰 기숙사 안에서 동일한 룸에 에러코드도 들어가고 아이템 모델도 들어가는건가요? 이런 비유로 표현하셨다고 생각합니다. 좀 더 제가 보태자면 큰 기숙사(model) 안에 각각 다른 방(item, errors)에 에러 코드, 아이템 들이 들어간 것이라고 이해해주십쇼! 감사합니다.
- 0
- 2
- 38
질문&답변
2024.04.29
ModelAttribute 사용유무가 궁금합니다.
안녕하세요. zzzzz님, 공식 서포터즈 y2gcoder입니다. 사용하는 영역이 다르다고 이해해주시면 감사하겠습니다. 이 부분은 설계와 관련된 영역이라 보셔도 좋습니다. 예를 들어 위의 createOrder() 는 컨트롤러의 메서드가 아니라 도메인 영역에 있는 엔티티의 메서드 입니다. @ModelAttribute는 표현 영역 중에서도 컨트롤러 단에서 사용하여 요청과 객체 간의 매핑을 용이하게 해주는(+추가로 모델에 해당 객체를 넣어주는) 애노테이션입니다. 그래서 결과적으로 도메인 영역에서 @ModelAttribute()를 사용하시지 말라고 말씀드리고 싶습니다 🙂 제가 그렇게 직접 사용하지는 않았으나, 그렇게 사용할 일이 없으실 겁니다. 정리하자면 @ModelAttribute는 컨트롤러의 메서드일 때만 사용하는 의미가 있다고 생각합니다. 추가로 도메인 영역에 있는 코드에서 표현 영역에 있는 코드를 의존하는 것은 대부분 유지보수할 때 좋지 않았습니다! 감사합니다.
- 0
- 1
- 26
질문&답변
2024.04.28
final 변수 질문
안녕하세요. 조소현님, 공식 서포터즈 y2gcoder입니다. final 은 본 강의 앞머리에서 영한님께서도 말씀하시듯이 변수의 값을 변경하지 못하게 막는 기능입니다! 실무에서는 불변 객체를 만들거나, 특히 스프링에서 의존 객체를 생성자를 통해 주입할 때 의존 객체를 쉽게 변경하지 않도록 final로 막아주기도 합니다. 개발하시다 보면 객체의 상태(속성, 필드)를 변경하지 못하도록 해야 할 때가 많습니다. 이 때도 final을 사용해서 막아줄 수 있습니다! 감사합니다.
- 0
- 1
- 34
질문&답변
2024.04.26
/request-param-v1 질문있습니다.
안녕하세요. zzzzz님, 공식 서포터즈 y2gcoder입니다. @Controller에서 메서드의 반환타입이 String 이면 스프링 MVC는 뷰네임을 반환한 것이라고 이해합니다 (사진) 그래서 뷰 리졸버로 가서 해당 논리적 뷰 이름을 가진 뷰 파일을 찾아 반환해주려고 하게 됩니다! 반면에 @ResponseBody를 해주면 메서드 반환값을 뷰 리졸버로 보내지 않고 바로 HTTP 응답 본문에 써주기 때문에 그냥 "ok"라는 텍스트를 바로 응답으로 반환해주게 됩니다. 감사합니다.
- 0
- 2
- 31
질문&답변
2024.04.26
섹션 5. 문자열과 타입 안전성 1
안녕하세요. 권정익님, 공식 서포터즈 y2gcoder입니다. 마지막 return price * (discountPercent / 100); 이 무조건 0이 반환되는 이유가 뭔가요? 예를들어 BASIC에 들어오면 discountPercent 에는 10의 값이 들어가고 마지막에 price ( 10 / 100); 이 되는 거 아닌가요?ㅠㅠ => 저도 말씀하신 내용이 맞다고 생각하는데, 위와 같이 생각하신 이유나 원인에 대해서 좀 더 설명해주시면 감사하겠습니다! 감사합니다.
- 0
- 1
- 46
질문&답변
2024.04.26
model.addAttribute시 질문!!
안녕하세요. jaehun306님, 공식 서포터즈 y2gcoder입니다. model.addAttribute("name", 객체); 위와 같이 저장해줬다고 하면 해당 객체를 찾기 위한 값(attributeName)이 "name"이기 때문입니다. 타임리프도 model에 저장할 때의 attributeName을 기준으로 해당 객체를 찾기 때문에, 모델에 저장할 때와는 다른 이름으로 찾으려 하면 타임리프가 찾을 수 없습니다 (사진) 감사합니다.
- 0
- 1
- 38
질문&답변
2024.04.26
다형적 참조시에 생성자 호출 질문
안녕하세요. 디와이님, 공식 서포터즈 y2gcoder입니다. 객체 생성 시에 타입을 기준으로 생각하시면 좋을 것 같습니다! Parent p = new Child(); 에서 객체 생성하는 코드는 new Child()입니다. 즉 Child 타입으로 Child의 생성자를 이용해서 생성한 객체를 Parent 타입의 변수 p에 대입해주는 것입니다! 이 부분에 대해서 고민해보시면 좋을 것 같습니다 (사진) 감사합니다.
- 0
- 1
- 28