학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 7:33초에 했던 말에서 질문이 있습니다. ControllerV4HandlerAdapter() 안에 handle 메소드에 있는 아래 코드 String viewName = controller.process(paramMap, model); ModelView mv = new ModelView(viewName); mv.setModel(model); 에서 viewName을 가지고 mv라는 모델 뷰를 만들고 모델까지 값을 세팅해서 넘긴다고 했는데 viewName 에는 논리이름이 들어가는거는 알겠는데 위 mv.setModel(model);에는 어떤 값이 세팅되서 들어가나요? 첫번쨰 코드로 model을 사용한 후에 어떤걸 set으로 넣어주는지지를 잘 모르겠습니다.
안녕하세요 강의를 보다 헷갈리는 부분이 있어서 질문드립니다. 😅 강의 중 Massive View Controller? 라는 챕터에서 강사님이 설명해주신 UIViewController의 책임을 제외한 네트워크통신 로직 또는 로컬데이터 저장하는 로직등에 관한 코드등을 임의로 Controller에 추가하면 비대해질 수 있다고 하셨는데 두 가지 예시는 데이터를 처리하는 로직이라고 생각이 듭니다. PDS의 사상으로 나누면 도메인으로 생각하는 것이 맞을까요? 🤔 CocoaMVC에서 해당 로직 등에 관한 정확한 제시가 없는 부분이 개발환경에 따른 영향이 아닌 CocoaMVC아키텍처 패턴에서 문제로 봐야될까요? 🤔 CocoaMVC에서 해당 로직 등은 그럼 어디에 담당하는 것이 맞는지? 고민이 됩니다. 따라서 CocoaMVC에서 다른 아키텍처패턴등이 파생된 것이라고 볼 수 있을까요?
안녕하세요. JPA를 공부하면서 궁금한점이 생겨서 질문드립니다. JPA는 ORM이므로 RDMS와 연결되는거로 알고있습니다. 현재 제가 사이드 프로젝트를 진행하고 있는데.. NoSQL와 JPA를 동시에 경험해볼 수 있는 프로젝트를 만들고자하는데.. NoSQL은 JPA와 아예 연결지을 수가 없는지 궁금합니다. 강의 잘 듣고있습니다. 항상 감사합니다.
강의 9분쯤 나오는 build.gradle 설정과 제 gradle에서 useJUnitPlatform 부분이 달라서 그런지 useJUnitPlatform이 회색글씨로 나오고 인식이 되지 않습니다 project와 SDKs에서 자바버전은 자바11로 동일하게 맞춰놓은 상태입니다 직접 코드를 수정해 reload 하는 방법밖에 없는 건가요?
로그인 - 서블릿 HTTP 세션2에서 로그인을 처음 시도하면 URL이 jsessionid 를 포함하고 있는데 - 리다이렉트되는 페이지는 MVC2 강의 처음에 생성했던 static/index.html로 리다이렉트 됩니다. (MVC 강의 1부터 2까지 하나의 프로젝트에 설정하고 있어서 - 이전의 실습내용도 삭제하지 않은 상황입니다.) 물론 application.yml에 server.servlet.session.tracking-modes=cookie 적용해주면 강의와 똑같이 정상적으로 동작하지만, 위에서처럼 index.html이 나오는 것은 무슨 이유 때문일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 자료에서 설명할 때 application.properties 에 spring.messages.basename=messages,config.i18n.messages 로 설정 할 수 있다고 하셨는데 저 표현식은 해석하면 message 관리 파일을 messages 디렉토리와 config.i18n.messages 디렉토리로 관리하도록 설정한다고 이해하면 될 까요? config.i18n.messages가 어떤 의미인지 그냥 경로를 표시한건지 잘 모르겠어서 질문 드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 강의 를 보다보면 inline variable 단축키누르셔서 코드 합치는거 좋아하신다면서 코드합치시는데 예를들어 aop 적용 영상에 3분 40초 대쯤 보면 Object result = joinPoint.proceed(); return result; 을 단축키로 return joinPoint.proceed(); 처럼 바꾸시는데 저렇게 단축키로 하면 눈에안보여도 뭔가 연결이 생기는건가요? 외관적으로는 Object result 를 지우고 return 에 추가한것과 같아보이는데 그냥 타이핑하는거랑 의미가 다른건가요? 아니면 그냥 적어도 상관 없고 똑같은건가요? 감사합니다!
안녕하세요. 강사님께서 TabLabel을 아래와 같이 작성하셨는데, Key에 []가 들어가 있는 경우는 처음 보아서요. const TabLabel = { [TabType.KEYWORD]: "추천 검색어", [TabType.HISTORY]: "최근 검색어", }; Key를 배열로 선언하신 것인가요? 이와 관련된 문법은 어디서 찾아볼 수 있을까요?
안녕하세요. storage를 동적으로 변경하는 경우 현재 기준으로 어떤 부분의 코드를 변경하는 것이 좋을지 문의드립니다. 현재 코드에서는 아래와 같이 정적인 데이터(storage.js)를 main.js에서 주입해주는데요. // main.js import Store from "./store.js"; import storage from "./storage.js"; function main() { const store = new Store(storage); new Controller(store, views); } 만약 storage 데이터를 ajax를 통해 동적으로 받아온다면, main.js와 Controller.js는 그대로 두고 Storage.js와 storage.js 파일만 변경하면 되나요? 즉, 아래 코드 주석처럼 하면 될까요? 또한, AJAX 요청은 Controller와 Storage 중 어느 부분에 작성하는 것이 일반적인가요? // Controller.js // 변경 없음 export default class Controller { constructor(store, { searchFormView, searchResultView }) { this.store = store; this.searchFormView = searchFormView; this.searchResultView = searchResultView; this.subscribeViewEvents(); } subscribeViewEvents() { this.searchFormView .on("@submit", (event) => this.search(event.detail.value)) // } search(searchKeyword) { this.store.search(searchKeyword); } } // storage.js // 데이터를 빈 배열로 변경 const storage = { keywordData: [], historyData: [], productData: [], }; export default storage; // Store.js export default class Store { constructor(storage) { if (!storage) throw "no storage"; this.storage = storage; this.searchKeyword = ""; this.searchResult = []; } search(keyword) { this.searchKeyword = keyword; this.searchResult = // 여기서 AJAX 요청을 통해 storage.js의 상태 관리? 아니면 Controller에서 AJAX 요청? } }
먼저, 제가 컨텍스트 스위칭에 대해 알고 있던 내용은 프로세스 컨텍스트 스위칭인데, CPU 코어 하나당 하나의 프로세스만 점유를 할 수 있기에, 한 코어에서 여러 프로세스를 번갈아 가며 수행하기 위해 컨텍스트 스위칭이 일어난다고 알고 있습니다. 궁금증이 생긴 부분은 쓰레드 컨텍스트 스위칭의 구조와 스프링 웹플럭스에서 쓰레드의 개수를 CPU 코어의 개수에 따라 설정해두어 성능을 높인다는 부분입니다. 쓰레드는 프로세스에 종속적이라고 알고 있습니다. 한 프로세스 안에서 여러 쓰레드가 생성 될 수 있는 건 알지만, 그렇게 생성된 여러 쓰레드 간에 컨텍스트 스위칭이 일어난다는 것은, 무엇을 점유하기 위해 발생하는 것인지 궁금합니다. 프로세스는 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어나기에, 쓰레드도 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어난다 생각해보기는 조금 모순인 부분이 있어 질문 드립니다. 또한, 스프링 웹플럭스에 관련한 부분도, 한 프로세스는 하나의 CPU를 점유하기에 그 프로세스 안에서 생성된 쓰레드 또한 해당 프로세스가 점유한 CPU 코어에만 관련되어 수행된다고 생각했는데, 쓰레드 개수를 CPU 개수에 맞췄다는 말은 쓰레드를 생성한 프로세스가 점유한 CPU 코어 외 다른 코어도 쓰레드가 쓸 수 있다는 것인가 싶어 질문 드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] pathvariable 을 쓰는 경우와 requestparam 을 쓰는 경우가 나뉘어져 있나요? 아니면 둘의 역할이 달라 다르게 쓰는 건가요?
안녕하세요 좋은 강의 항상 잘 보고 있습니다. 다름이 아니라 8분 경 RequestMappingHandlerMapping은 스프링 빈 중에서 @RequestMapping 또는 @Controller가 클래스 레벨에 붙어 있는 경우 매핑 정보로 인식한다 하였는데, 스프링 6 버전 이후부터는 @RequestMapping은 인식하지 않게 변경된 것 같아 말씀 드립니다. 관련 커밋 링크 참조합니다! https://github.com/spring-projects/spring-framework/commit/3600644ed1776dce35c4a42d74799a90b90e359e 감사합니다.
안녕하세요, afterCompletion() 에서 에러 로깅과 관련해서 질문드립니다. 현재 강의에서는 컨트롤러에서 예외가 터지면 afterCompletion() 의 파라미터 ex 가 널이 아니니까 이 ex 를 통해 어떤 에러가 났는지 로깅을 해주고 있습니다. 그렇다면 만약 @ExceptionnHandler 를 이용해 컨트롤러의 예외처리를 한다면 이 ex 는 별도로 사용하지 않아도 될까요?(거의 사용을 안 하게 될 것 같은데, 맞나요?) 항상 영한님과 서포터님들께 감사드립니다!🙇♂️
안녕하세요. redirect를 써서 새로고침 시에 중복 방지하는 것까지는 이해를 했습니다. 그런데 만약에, restcontroller일 경우 즉 값만 받아서 저장하고 값만 돌려주는 경우에는 따로 redirect 처리하지 않아도 되는 거죠? 예를들면 javascript로 ajax를 사용해서 값을 보내고 저장(또는 삭제, 수정) 하는 경우일 때가 궁금한것입니다!
[질문 내용] 안녕하세요 강사님! 강의 잘 듣고 있습니다. 다름이 아니라 타임리프에서 chekced를 표기하는 방법을 알고 싶습니다! html 소스보기 사진 <div class="form-check form-check-inline"> <input type="radio" value="ETC" class="form-check-input" id="itemType3" name="itemType" /> <label for="itemType3" class="form-check-label" checked="checked" >기타</label> </div> 소스코드 <!-- radio button --> <div> <div>상품 종류</div> <div th:each="type : ${itemTypes}" class="form-check form-check-inline"> <input type="radio" th:field="*{itemType}" th:value="${type.name()}" class="form-check-input" th:checked="${(type.description == '기타')? 'true':'false'}" /> <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label" th:checked="${(type.description == '기타')? 'true':'false'}" > BOOK </label> </div> </div> 위처럼 표시했는데 label 태그에는 나오고 input태그에는 나오지가 않습니다 ㅠ 이유가 무엇일까요? 또 thymeleaf로 표기하려면 어떻게 해야할까요? 그리고 formController에서 초기값을 설정하는 방법은 직접 해봤습니다! 타임리프에서 조건을 줘서 checked를 주는 방식이 궁금합니다! 감사합니다 ㅎㅎ
String viewName= controller.process(paramMap,model) 을 하게 되면 무슨 값이 들어가게 되나요? paramMap과 model 자체가 map 형태인데 어떻게 string 으로 치환이 되는건지 궁금합니다. process 메서드를 제가 잘 이해를 못한건지 이해가 잘 되지않습니다.
이 부분에서 ModelView mv = new ModelView("save-result") mv.getModel().put("member",member); 이렇게 하면 결과가 어떻게 되는 건가요? mv.setModel().put("member",member); 을 해야 맞는거 같은데 잘 이해가 안되서 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] controller.process(request, response); 가 dispatcher.forward(request, response); 와 똑같이 화면을 전환해주는 의미로 볼 수 있나요?
세션과 메모리에 대해서 질문드립니다. 강의 14:40 경 '예제에서는 Member 인스턴스 자체를 세션 메모리에 저장했지만, 실무에서는 최소한의 정보를 담은 객체만 저장한다.' 라는 의미로 말씀해주셨습니다. 그렇다면 이 때, 최소한의 정보를 담은 객체 는 어떻게 생성해야 하는지 궁금합니다. 제가 생각한 방법은 1. LoginForm 의 ID, PW 를 추출 2. 로그인 서비스에서 리포지토리에 접근에 실제로 ID, PW가 일치하는지 확인 (로그인 로직 수행) 3. 위 로직이 끝나고 ID, PW에 오류가 없으면 ID 필드만 갖는 LoginMember 인스턴스 생성 (이 경우 JPA를 쓴다면 식별자만 필드로 갖는 LoginMember) 4. 생성된 LoginMember 인스턴스를 value 로 세션 메모리 에 저장 이 될 것 같습니다. 혹시 제가 생각한 방법대로 하면 될지, 아니면 다른 방법이 있을 지 (더 좋은 방법이 없는지) 서포터님의 의견을 묻고 싶습니다. 영한님과 서포터님들께 항상 감사드립니다. 🙇♂️