묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 JdbcTemplate에서 H2에 테이블이 없다는 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
검증 실패 후 값이 빈칸인 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 log.info("item.price1 = {}", item.getPrice()); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item","itemName","상품 이름은 필수입니다.")); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.addError(new FieldError("item","price","가격은 1,000 ~ 1,000,000 까지 허용합니다.")); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { bindingResult.addError(new FieldError("item", "quantity", "수량은 최대 9,999 까지 허용합니다.")); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.addError(new ObjectError("item","가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = "+resultPrice)); } } //검증에 실패하면 다시 입력 폼으로 if (bindingResult.hasErrors()) { log.info("errors = {} ", bindingResult); log.info("item.price2 = {}", item.getPrice()); return "validation/v2/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v2/items/{itemId}"; }addItemV1에서 폼의 가격에 1원을 입력 후 저장했을 때 log.info("item.price1 = {}",item.getPrice()) 와 log.info("item.price2 = {}",item.getPrice())로 검증시작 전과 검증 실패 후(뷰 반환 직전)에 item.getPrice()의 값을 로그로 확인했는데, 둘다 1이 뜨더라구요.그럼 검증 실패후 뷰로 넘어갔을 때 뷰에서는 똑같이 1이 남아있어야 하는거 아닌가요? 뷰의 th:field="*{price}"는 item.getPrice()로 값을 가져오는데 왜 1이 아니라 null인건지 이해가 안됩니다..!-> 강의뒷편에 내용이 나오네요 ㅎㅎ해결했습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
서비서 계층 스프링 프레임워크 사용
이번 강의 코드에서 서비스 계층 코드인 MemberServiceV3_1 에서 PlatformTransactionManager 같은 스프링 프레임 워크를 사용하고 있는데요,이전 강의에서 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층에 대해 설명하실 때서비스 계층에서는 순수 자바 코드로 작성해야한다고 하셨는데요.MemberServiceV3_1 에서 몇몇 코드가 스프링 프레임워크인데 이런 것은 정말 필요에 의해서 사용하는 것이므로 어쩔 수 없는 부분인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 방식의 인증 과정에 궁금한점 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 듣고 프로젝트 진행 도중 궁금한게 생겨 질문드립니다!현재 강사님이 알려주신대로 유저가 로그인에 성공하면 user 세션을 만들고 세션 아이디를 쿠키로 전달 하고 있습니다.이후 요청이 올때마다 인터셉터에서 세션이 있는지 user라는 세션이 있는지 확인 후 컨트롤러에 접근하도록 구현했습니다.여기서 궁금한 점이만약 유저A가 로그인에 성공한 후에 수정이나 생성 또는 그 외의 과정을 유저B의 아이디로 url 또는 요청 body에 담아 요청을 보내도 인터셉터에선 인증된 것으로 간주 되어 유저A가 유저B를 탈퇴시키는 등의 과정도 가능할거라는 생각이 들었습니다.이에 대한 해결 방안으로 user 세션의 아이디 값과 요청으로 들어온 아이디 값이 일치하는지 확인하는 로직을 필요한 모든 컨트롤러에 추가하는 것이 일반적일까요?아니라면 실무에서는 주로 어떻게 처리하는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원관리 예제 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]5. 회원 관리 예제 - 웹MVC개발을 실습하는 과정에서,이렇게 홈 화면까지는 뜨는데,회원 가입을 누르면에러 페이지가 뜹니다.구글 드라이브 링크 첨부하겠습니다!https://drive.google.com/file/d/15PPRaCNjmwZQYFxy5s0uY_FST3DapsL4/view?usp=sharing+) 위에가 메인 질문이고 세부사항 질문이 있습니다. 1) Whitelabel 에러 페이지가 뜨는데 인텔리제이 콘솔 창에는 별도의 에러 메시지가 뜨지 않습니다.이게 콘솔창 최하단인데요. 에러메시지가 안나는게 정상인가요? 2) 위에 사진을 왼쪽에 실행목록을 보면 계속 로드중 표시 두개가 돌아가는데요. 저게 계속 돌아가더라고요. 빌드가 완료되면 초록색이 떠야되는거 아닌가 싶어서 여쭤봅니다. 웹 상에서 localhost:8080 홈페이지에 들어가지긴 합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 유료버전 / 무료버전
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모르겠어요)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이제 백엔드 개발자로 취업한 새내기 입니다. 제가 학생이 아니라 인텔리제이 유료버전을 사용해서 스프링부트앱을 개발하고자 하는데, 너무 비싸서 회사에서 따로 결제를 해주진 않습니다..혹시 그냥 커뮤니티에디션 으로 restapi 구현하는 방식으로 회사 일에 유리하게 가져갈 수 있을까요?저희 회사는 스프링부트를 백엔드로,프론트는 jsp,jstl 사용중이라 집에서도 한번 해보고 싶은데 커뮤니티 에디션으로는 어려워서요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
정상 응답이라는 표현 질문입니다.
강의를 보고 궁금한 점이 생겼다가 질문답변 게시판에도 유사 질문은 없는 것같아 gpt에도 물어봤지만 gpt 답변과 조금 다른 것같아 여쭈어봅니다.11:20초 즈음에 그림에서처럼 8번. 정상 응답이라고 표현을 하시는데 이것에 대한 기준?같은게 궁금합니다. 아래 코드는 강의의 try catch 코드입니다. try { if (ex instanceof IllegalArgumentException) { log.info("IllegalArgumentException resolver to 400"); response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } } catch (IOException e) { log.error("resolver ex", e); } 먼저 예외가 발생하고 ExceptionResolver 가 넘어온 예외 해결을 시도하는데요.코드에서 sendError() 로 에러 응답의 상태 코드를 변경하고 메시지를 설정한 후 빈 ModeAndView를 반환합니다.이때 찾아본 결과 sendError() 가 있으면 응답은 내부에 완료 표시(커밋)처리를 하기 때문에 reponse에 뷰를 작성?할 수 없어 ModelAndView가 빈 값이던 뷰 값을 주던 상관 없이 뷰 렌더링이 되지 않는다고 하더군요.이부분 때문에 강의 ModelAndView 지정 부분에서 헷갈렸습니다. 이건 sendError가 없을 경우를 설명하신 것맞나요? 아무튼 본론으로 돌아와서 현재 코드와 과정처럼 최초 발생한 예외를 ExceptionResolver 에서 처리하고 DispatcherServlet로 넘어간 후 뷰 렌더링을 처리하지 못하고 WAS에 넘기는데요.이때 비록 뷰 렌더링은 하지 못했지만 ExceptionResolver 에서 상태 코드 등을 설정 후하고 ModelAndView를 반환하면서 에러를 처리하였으므로 WAS에 넘겨도 이것을 정상응답이라고 하나요? 아니면 제가 gpt에서 얻은 답변에서는 ExceptionResolver 가 예외를 처리했더라도 뷰 렌더링을 하지 못하고 WAS에 넘겼으므로 정상 응답으로 보지는 않는다고 하던데.. 정상응답의 기준이 어떻게 되나요? 좀 쓸데 없는 질문 같긴한데 ExceptionResolver 에서 ModeAndView 값 지정에 따른 반환에 대해 궁금해서 찾다가 궁금한점이 여기까지 파생되어 질문드립니다..
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTML Form으로 데이터 전송 시, getInputStream()과 getParameterNames() 함께 사용
getInputStream()과 getParameterNames()를 함께 사용 시, 순서 상 뒤에 있는 메서드에서는 출력이 안되는 상황을 발견했습니다저의 추측으로는 두 메서드 모두 스트림으로부터 데이터를 싹 가져와서 그런 거 같습니다테스트 해보니 getParameterValues() 메서드 역시 마찬가지고요질문1) 우선 상기 추측이 맞나요? 이번에는 getInputStream() 과 getParameter() 를 테스트 해봤습니다역시나 같은 결과였지만 한 가지 의문이 있습니다username과 age 두 가지 데이터에 대해 서버로 보냈을 때서버 측에서는 getParameter(username) 만 해도 age 에 관해서는 getInputStream() 에서 출력되지 않음을 확인했습니다질문2) getParameter() 를 최초 실행하게되면 스트림에 있는 데이터를 싹 가져와 특정 컬렉션(Map 일까요?)에 담고 이후부터는 컬렉션에서 바로 찾는 식인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단위테스트, 통합 테스트, 시스템 테스트...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 부트캠프에서 프로젝트를 진행할 때 테스트 코드를 짜긴 했었는데 거의 지식 없이 짰던지라 controller랑 service만 단위 테스트로 짰고 통합 테스트는 안 했습니다.단위 테스트는 class 단위 어노테이션에 SpringBootTest를 안 쓰는게 맞는건가요? 제가 그렇게 했었거든요.@SpringBootTest는 통합 테스트일 때만 쓰는 건지, 어떤 경우에 쓰는 어노테이션인 지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성의 실행
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/[질문 내용]여기에 질문 내용을 남겨주세요.질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/ 프로젝트 생성의 13:24의 실행이 되지 않습니다.Cause: class java.util.concurrent.ExecutionException cannot be cast to class java.lang.RuntimeException (java.util.concurrent.ExecutionException and java.lang.RuntimeException are in module java.base of loader 'bootstrap')java.lang.IllegalArgumentException: Could not create problems-report directory '/build/reports/problems'* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.13/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 55ms1 actionable task: 1 executed 두가지의 오류가 뜨는데 어떻게 해결해야할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
쓰레드와 서블릿
전에 배웠던 쓰레드 내용과 함께 질문드립니다 사용자로부터 요청이 오면 쓰레드 풀로부터 쓰레드를 할당을 받고이 쓰레드가 HttpServlet 클래스에 있는 public void service를 실행하고그 안에서 수업 시간에 직접 재정의한 protected void service가 실행된다고 이해하면 될까요? 제일 궁금한 점은 Http 요청이 올 때 서블릿 코드를 수행하는 쓰레드가 처음으로 실행하는 메서드가 무엇인지 입니다
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
Business Layer 종속성 추가 불가 문제
12_3강을 듣고 있는데, HelloASP 프로젝트에서 종속성 부분을 우클릭해서 프로젝트참조추가 버튼을 눌러 Business Layer를 추가한다고 말씀주셨습니다.똑같이 따라 했는데 추가가 되지 않네요. 종속성 부분을 다시 우클릭해서 프로젝트참조추가 버튼을 누르면 Business Layer에 체크 박스가 해제 되어 있습니다. 제가 놓친 부분이 있으니까 그런 거 같은데 어딘지 모르겠습니다 ㅠㅠ 살펴 볼 만한 요소가 있을까요 ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션과 세션 저장소는 같은말인가요?
질문 그대로 두 단어의 뜻이 같은지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 변경 사항 저장
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요현재 맥북 M2 모델로 강의를 따라가고 있는데 인텔리제이에 변경사항을 저장 후 실행 or 테스트를 진행 시 변경 사항이 적용되지 않는 문제점이 계속 발생하고 있습니다.따라서, 변경 사항이 생기고 저장한 후 인텔리제이를 계속 껐다가 다시 켜는 방식으로 하고 있는데 너무 불편해서 해결 방법이 있는지 여쭙고 싶어서 글 남깁니다..!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ModelAndView에 값을 줄 시.
예외 발생 후 ExceptionResolver에서 ModelAndView에 값을 주지 않고 반환시 뷰를 랜더링하지 않고 WAS에 정상 응답으로 돌아가고 WAS에서는 sendError() 이 호출됐었으니 ErrorPage를 찾고 그에 맞는 요청을 하고 BasicErrorController에서 다시 뷰를 랜더링 할텐데요.만약에 ModelAndView에 값을 준다면..ModelAndView가 그 값에 맞는 뷰를 랜더링 하고 화면에 보여준 후 WAS에서 진행한 ErrorPage의 뷰도 보여주는건가요..?그럼 제가 보는 입장에서는 두개의 화면이 렌더링되어 보게되는 걸까요? 더해서 이것이 맞다면, ModelAndView에서 뷰를 랜더링 해서 이미 처리 완료했는데 sendError 때문에 또 다시 ErrorPage를 처리하기 위해 뷰를 랜더링하는 상황이 좀 이상하게 느껴지는데 이게 정상인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontController 패턴을 사용하는 이유에 대해 제대로 이해했는지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 원리부터 차근차근 설명해주신 덕분에 스프링 소스 코드도 살펴볼 수 있을 것 같습니다. 감사합니다.다름이 아니라 이 섹션과 다음 섹션을 듣고 나서 학습한 내용을 정리하려고 보니 잘 이해했는지 확실하지 않은 부분이 생겨 질문드립니다.이해한 바는 다음과 같습니다.FrontController 패턴 도입 동기많은 컨트롤러에서 사용하는 공통 처리 로직을 보일러플레이트 없이, 누락 없이 사용하기 위함.궁금한 부분은 다음과 같습니다.이 문제를 언급하신 필터와 인터셉터로도 해결할 수 있을 것 같은데, 왜 FrontController 패턴을 사용하는지 궁금합니다.뒤에 호출되는 컨트롤러의 구조가 HttpServlet으로 제한되지 않기 때문이라고 현재 생각하고 있습니다. 스프링에서 공통 로직을 도입할 때 실제로 DispatcherServlet(FrontController)을 확장하는 방식으로 처리하는지도 궁금합니다.감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터가 처음에도 호출제외 되어야하는것 아닌가요?
필터부분은 DispatcherType으로 구분하기때문에 이해를 한 것 같은데..인터셉터는 잘 이해를 못했습니다.인터셉터에서 excludePathPatterns("/css/**", "/*.ico", "/error", "/error-page/**") 하여 경로를 제외했는데요.그렇다면 첫 요청에서 에러 발생 후 인터셉터 호출은 아예 제외되어야하는 것아닌가요..?그러니까 6:00 경부터 말씀하시는 전체흐름에서WAS -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 -> View가 첫 흐름인데 지금 호출된 로그를 보면 afterCompletion 만 호출된 상황입니다.이것은 요청 완료 이후 서블릿?에서 호출되는 것으로 기억하고 있는데요. 그런데 인터셉터에서 경로를 제외했으니 afterCompletion 역시 호출 자체가 안되어야 하는 것아닌가요? 지금 강의에선 첫 요청에서의 인터셉터는 호출되고 이후 에러 발생후 요청에서의 인터셉터는 제외 경로 설정대로 로그 출력이 되지 않는데요. 에러가 발생하면 addInterceptors() 와 extendHandlerExceptionResolvers() 은 호출이 안되고 afterCompletion 만 호출되는 것으로 기억하는데, excludePathPatterns() 에서 경로를 아예 제외했으니 그냥 자체가 호출 되지 말아야하는것 아닌지 궁금합니다.왜 첫 요청에서의 인터셉터는 호출되고 에러 발생 했을 떄의 인터셉터에서만 호출 되지 않는건가요? DispatcherType 은 필터에서만 적용되는 거라 인터셉터에 적용되는 경우는 아닌 것 같은데 말이죠.. 지금 머릿속으로 제대로 정리가 되지않아 질문 이해가 잘 되셨을지 모르겠습니다. 감사합니다.Dis
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Formatter 구현 및 사용 이유 질문..
Formatter를 다른 구현체들을 사용하는게 아니라 직접 구현해서 사용하잖아요?그런데 이것에 대해서 궁금한게 있습니다..순전히 parse() 와 print() 를 저희가 직접 구현하는데.. 이 둘에 다른 특별한 기능이 있는 것도 아닌 것 같은데..저희가 Fommater를 implement하지 않고 그냥 하나의 인터페이스를 만들어 parse()와 print()를 직접 구현하는 것이랑은 무엇이 다른가요..? 저는 값만 넣으면 1000이 1,000이 된다거나 1,000이 1000이 되는 것을 생각했었는데 이 변환하는 것까지 직접 구현하는 것(물론 자바에서 지원하는 기능을 사용하기는 합니다)을 보고 위같은 의문ㅇ이 들었습니다.. 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
IpPortToStringConverter이 호출되는 이유
11:40부터 시작하는 form을 제출했을때 호출되는 컨버터에 대한 질문입니다. 강의에서 제출 버튼 눌렀을때 127.0.0.1:8080라는 문자가 컨트롤러에 넘어간다고 하십니다. 해당 컨트롤러에는 @ModelAttribute가 있고 Form 을 변환하려고 했더니 IpPort객체가 있어서 문자를 IpPort객체로 변환해야하는데 이때 IpPortToStringConverter 이 또 호출된다고 하시는데요.여기서 왜 IpPortToStringConverter이 호출되는건가요? 문자에서 IpPort 객체로 변환해야하는 것이니까 StringToIpPortConverter가 호출되어야하는 것 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
지금들어도될지
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]혹시 나온지가 좀 된 강의인데 지금들어도 버젼이라든지 상관없을까요?