월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Dispatcher과 웹 mvc의 동작 과정 질문 있습니다,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문1.DispatcherServlet는 따로 프레임워크에서 구현하지 않아도 되나요? 예를 들어, 1)DispatcherServlet이 모든 웹 브라우저로부터의 요청을 받는다.2)DispatcherServlet은 HandlerMapping으로 부터 주어진 request를 처리할 수 있는 Handler객체를 가져온다. 이렇다면, 사용자가 따로 DispatcherServlet를 구현할 필요 없이 스프링 프레임워크 자체에서 DispatcherServlet를 구현 + HandlerMapping을 받을 클래스들을 빈으로 만들어서 관리함.그래서 @RequsetMapping 같은 URL 요청이 들어오면 해당되는 클래스에게 요청을 넘긴다.이렇게 이해하면 옳게 이해한 것이 맞나요? 질문 2.저는 아래와 같이 웹 MVC 동작 과정을 이해 했습니다. 옳게 이해한 것이 맞나요?1.클라이언트가 서버에 요청을 하면 DispatcherServlet 클래스가 요청을 받음2.@Controller 어노테이션을 이용해 빈으로 등록한 컨트롤러를 찾아 매핑된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동함.3.컨트롤러는 해당 요청을 처리할 @Service 클래스를 찾아 로직을 수행함.4.서비스는 DB에 접근하여 요청을 수행하고 DTO를 통해 데이터를 컨트롤러에게 전달한다. 5.그 후 컨트롤러는 DTO를 통해 받은 데이터를 DispatcherServlet에게 다시 전달하고, DispatcherServlet는 응답과 함께 URL(view)를 반환해준다. 질문 3제가 위와 같이 이해를 했을 때, DTO가 Model이라고 이해를 하면 되는건가요? 감사합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰라는 용어의 범위에 대하여 + 강의 자료 @PathVariable 오타
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 내용들을 보다 보면 '뷰'라는 용어가 View 클래스를 상속받은, 예를 들어 ThymeleafView 클래스의 객체 등을 뜻하는 것 같기도 하고, 가끔은 templates 디렉터리의 하위에 있는 hello.html 같은 뷰 템플릿들을 뷰라고 말씀하시는 것 같기도 했는데 맞나요? 제가 헷갈렸던 건지 모르겠네요.. 뷰라는 용어의 범위를 넓게 생각해도 될까요? 아래는 오타인 것 같아서 제보합니다.6. 스프링 MVC - 기본 기능(v20231202).pdf 24페이지에 있는 @PathVariable 관련 내용인데 @RequestParam 코드가 있습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
7강 웹페이지 만들기 질문(item-service)
본 강의 마지막 편인 웹 페이지 만들기에서 잘 되다가 addForm(상품등록)부터 white page에러가 뜨면서 안들어가집니다. 강의를 보고 다시 확인도 해봤는데 같은 부분에서 오류가 나서 접속이 안됩니다. 에러로 보아 addForm에 문제가 있는 것 같은데 도무지 오류를 찾을 수가 없어 질문 남깁니다. 구글 드라이브에 파일 압축해서 올려놓았습니다. https://drive.google.com/file/d/1Sq8rgY-2ZwPEoD8KaAeIfdXAPPJ-9NsT/view?usp=drive_link
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
웹 mvc패턴을 활용해 view에서 성공적으로 반환된 데이터를 다시 가지고와서 다른view에 뿌려줄 수 있나요??
자바 스프링부트를 사용하여 // API 호출 $.ajax({ url: /dataclick?inpuDate=${targetDate}, method: 'GET', headers: { 'Accept': 'application/json', 'Authorization': Bearer ${token}, 'Content-Type': 'application/json', }, success: function (data) { console.log('받은 데이터:', JSON.stringify(data)); // editPage로 이동 window.location.href = '/editPage'; }, error: function (error) { console.error('데이터 불러오기 실패:', error); } });제가 달력에서 선택한 날짜의 데이터를 성공적으로 받아와서 그성공적으로 받은 데이터를 editPage에 뿌리고싶어요 근데 mvc패턴을 사용해야하니 받아온데이터를 dto에 또 담아서 쓰고싶은건데 어떤식으로 작성해야할까요?스프링 부트 고수님들 도와주세요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc 패턴에서 등록된 회원을 조회할때 에러가 발생합니다.
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]"mvc 를 패턴 - 적용" 강의에서 회원 목록을 조회할 때 계속해서 에러가 발생해서 질문드립니다.MvcMemberListServlet.class@WebServlet(name = "mvcMemberListServlet", urlPatterns = "/servlet-mvc/members") public class MvcMemberListServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Member> members = memberRepository.findAll(); System.out.println("메모리에 저장된 데이터: "); for (Member member : members) { System.out.println("member.username = " + member.getUsername()); System.out.println("member.age = " + member.getAge()); } request.setAttribute("members", members); String viewPath = "/WEB-INF/views/members.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } } - 회원을 등록하고 "http://localhost:8080/servlet-mvc/members" 경로로 들어간후에, 위 코드의 실행 결과를 확인하면 MemberRepository 에 정상적으로 데이터가 들어 간 것을 확인할 수 있었습니다. 그런데 아래의 에러와 함께 whitelabel page가 보이네요.. org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this applicationorg.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application 위의 에러들에 관해서 구글링을 해보니까 jsp 파일에서 코드를 잘못 작성했을 확률이 높다고 합니다. 그런데 jsp 파일에는 큰 문제가 없어 보입니다 ㅠ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> </head> <body> 성공 <ul> <li>id=${member.id}</li> <li>username=${member.username}</li> <li>age=${member.age}</li> </ul> <a href="/index.html">메인</a> </body> </html>그리고 아래는 설정 파일입니다.plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.2' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 } tasks.named('test') { useJUnitPlatform() } 다른 질문을 보니 implementation 'javax.servlet:jstl' 이 부분을 주석 처리하고 다시 해보라는 답변이 있길래 해봤더니 여전히 에러가 발생합니다. 참고로 메인 클래스에 어노테이션은 저렇게 구성되어 있습니다. 도움 주시면 감사하겠습니다... @ServletComponentScan @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } }
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 듣고 있는데 오류가 있어 남깁니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.현재 실행이 안되고 있는 상태입니다. 무슨 문제인지 알고 싶습니다 ㅜㅜ구글 드라이브 링크입니다.https://drive.google.com/drive/folders/15MQr82y4Qdcm4Cs7dZItZMa7rG_fJevw?usp=sharing
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
404에러 발생 관련 문의
[질문 내용]코드 동작시에 save에서 예외처리를 안했다고 오류가 발생하는데 혹시 제가 어떤 부분을 잘못했는지 궁금해서 문의 드립니다!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Debug 문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]코드 실행 했을 때 local8080 입력해서 들어가면 ok라고 뜨고 잘 실행 되긴 하는데 debug가 많이 뜨고이런 것들이 많이 나옵니다.이렇게 뜨는 걸 보면 제대로 RUN 된 것 같지 않은데 실행은 잘 되는 것 같아요 어떻게 고쳐야 하는 건가요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
소스코드는 어디있나요
위치가 궁금합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 자료에 있는 스프링 부트 Welcome 페이지 지원 공식 문서 링크가 변경된 것 같습니다. + 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]6. 스프링 MVC - 기본 기능.pdf(v20231202)5페이지에 https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page 이 링크가 있는데 들어가 보면 Welcome 페이지에 대한 설명처럼 느껴지진 않는데 혹시 링크 주소가 변경된 걸까요? 찾아 보니 아래 두 링크가 Welcome Page 설명이랑 비슷하게 느껴졌습니다. 1.1.5. Static Contenthttps://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.static-content 1.1.6. Welcome Pagehttps://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.welcome-page 그리고 index.html에 대해 궁금한 점이 있습니다.index.html의 위치를 변경시키면서 localhost:8080을 호출했을 때 제대로 Welcome Page가 나타나는지 확인해 봤는데 /static/public/resources(resources 하위에 또 resources를 생성)/META-INF/resources이 위치에 index.html을 두었을 땐 Welcome Page가 제대로 나타나는 걸 확인했습니다. 그런데 /templates 하위에 index.html을 두어도 localhost:8080으로 Welcome Page가 호출이 되는 것 같습니다.컨트롤러를 통해 접근할 파일들을 /templates 하위에 두는 걸로 이해하고 있었는데, 이렇게 /templates 하위에 index.html을 두고 localhost:8080으로 접근하는 경우가 필요할 때가 있나요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ObjectMapper 지원안함....
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.ObjectMapper는 자바8에서만 지원하고 이제 스프링부트 3.0으로 넘어오면서 자바17버전을 사용하고 있어서 ObjectMapper 가 사용이 안됩니다... ObjectMapper를 대채할 메소드가 있나요 ??
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HttpServletRequest - 기본 사용법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:202) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[spring-context-6.1.3.jar:6.1.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar:3.2.2] at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na]Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:57) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-3.2.2.jar:3.2.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1256) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:951) ~[spring-beans-6.1.3.jar:6.1.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1216) ~[spring-beans-6.1.3.jar:6.1.3] ... 16 common frames omittedCaused by: java.lang.ClassNotFoundException: jakarta.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] ... 22 common frames omitted 이렇게 오류가 떠서 https://www.inflearn.com/questions/176890여기에 따라 지우는부분 지우고 다시실행해봤는데도 이러네요.강의부분 7분 30초까지 했습니다.서버를 중간에 다운했다 다시 시작하면 문제가 되나요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이에서 Current File run 실행이 안됩니다.
[질문 내용]인텔리제이에서 ServletApplication 파일은 실행되지만, 이외의 다른 파일 중 현재 위치 파일은 실행이 되지 않습니다.build.gradle을 현재 위치로 하고 실행 했을 때 실행이 잘 된 것을 보니 main을 제외한 모든 파일이 아닌 일부 파일이 인텔리제이에서 인식이 안되어 현재 위치에서 실행하지 못하는 것 같습니다.오류 메시지The file in the editor is not runnable.시도해 본 결과 아래 사진처럼 edit configuration 설정을 하여 해당 파일을 지정해서 run을 시도했지만, 원하는 파일을 선택한 후 ok버튼이 눌러지지 않습니다. 어떻게 해야 main파일이 아닌 다른 현재 위치의 파일을 인텔리제이 환경에서 실행할 수 있나요?처음부터 현재 파일이 실행이 안된 것이 아니라 plugins에서 tomcat 버전 업그레이드 한 이후부터 쭉 안됩니다.(smart tomcat 버전 : 4.72)참고)아래와 같이 자바 버전 설정 했고 , build.gradle에 다음과 같이 설정했습니다.java {sourceCompatibility = '18'}인텔리제이 유료 버전입니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 자료 오타일까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 이 사진은 김영한 선생님이 강의 영상에서 보여 주신 부분이고, 같은 부분이 6. 스프링 MVC - 기본 기능.pdf(v20231202)의 51 페이지에 있습니다. (아래 사진) RequestResponseBodyMethodProcessor랑 HttpEntityMethodProcessor는 강의 내용에서도 그렇고 제가 코드로 확인해 봤을 때도 클래스였는데, 수정된 강의 자료엔 RequestResponseBodyMethodProcessor(), HttpEntityMethodProcessor() 이런 식으로 메서드처럼 표시되어 있습니다. 저는 이것들이 갑자기 메서드처럼 수정된 이유가 궁금했었는데 혹시 ArgumentResolver 글씨를 지우면서 남겨진 오타일까요? 방금 코드를 보면서 알았는데 ResponseBodyMethodProcessor뿐만 아니라 HttpEntityMethodProcessor도 ArgumentResolver인 동시에 ReturnValueHandler인 것 같더라고요. 혹시 ArgumentResolver 하나에만 해당하는 게 아니기 때문에 지우신 거라면 ArgumentResolver, ReturnValueHandler 둘 다에 해당한다는 내용이 추가되거나, 아니면 괄호가 아예 삭제되는 게 어떨까 싶어서 제보드립니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿 참조 공유 변수에 대한 해결책이 궁금합니다.
스프링 핵심 원리 - 기본편 강의를 듣고 정리한 내용을 다시 보자면, 싱글톤을 기본으로 사용하는 스프링 컨테이너에서는 공유 변수를 방지하기 위해 order() 메서드 안에 지역변수로 값을 설정해야 한다고 나와있습니다. public void order(String name, int price) { System.out.println("name = " + name + " price = " + price); return price; }그런데 JPA 활용편에서는 임베디드 타입일 경우에는 new 생성자로 이를 해결하였고, 정적 팩토리 메서드 방식에서는 createOrder() 안에 new로 인스턴스를 따로 만들어서 객체 값을 관리하는 것으로 배웠습니다. 그렇다면 싱글톤으로 관리되는 서블릿에서도 지역변수 또는 new 생성자를 통한 불변 객체로 참조 변수가 공유되는 것을 막을 수 있나요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 수강 관련 고민질문 드립니다.
김영한님께서 추천하신 강의 순서는 이미 확인하였습니다. 해당 순서대로 mvc1편 듣고 있습니다.(이해가 완전히 잘 되었던 유일한 http 강의를 제외하고는) 모든 강의가 50%정도의 이해, 50% 정도는 그냥 따라치기에 급급한 느낌이 듭니다. 강의가 온전히 이해되지 않으니, 강의를 듣고 따라치는 과정에서 '나는 절대 저 코드를 혼자서는 못 만들 것 같다'라는 생각이 자연스럽게 듭니다.저는 현재 강의 내용이 이해가 잘 안 되더라도 흐름만 파악하며 일단 끝까지는 들어보자라는 생각으로 강의를 수강하고 있는데요, 이해가 잘 안 되면 오래걸리고 되돌아가면서라도 실시간으로 코드까지 이해를 완전 다 하면서 듣는 방식을 추천하시나요?비슷한 얘기일 수 있지만, 제가 이해가 덜 된 상태로 완강한 강의들을 다시 복습하는게 좋을까요? 결국 나중에는 복습을 하긴 하겠지만, 일단 끝까지 계속 진도를 나가며 모든 로드맵 완강 후 그제서야 다시 복습을 하는게 맞을까요? 아니면 현재 시점까지는 이제 스탑하고 처음 스프링 입문부터 복습을 먼저 한 후에 이어서 진도를 나가는 것이 맞을까요? 추가로, 아직 제가 듣는 강의에서는 내가 저 기술을 유용히 쓸 수 있겠다 라는 생각이 잘 안 들어서 더 힘든 것 같은데, 조금 더 실질적으로 잘 쓰이는 영역의 강의를 먼저 골라들어보고 싶습니다.. '스프링 입문 → 스프링 핵심원리-기본편 → HTTP 기본 지식 → 김영한 스프링 MVC 1편' 까지 수강중인데 추후 바로 '자바 ORM 표준 JPA프로그래밍-기본편 → 실전 스프링 부트와 JPA 활용1 → 실전 스프링 부트와 JPA 활용2' 이렇게 먼저 들어도 될까요? +) 강의를 모두 완강하신 누구든 답변해주시면 감사하겠습니다:)
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
BindException이 아니라 MethodArgumentNotValidException이 뜨는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@ResponseBody @RequestMapping("/model-attribute-v1") public String modelAttributeV1(@ModelAttribute HelloData helloData) { log.info("username = {}, age = {}", helloData.getUsername(), helloData.getAge()); return "ok"; }강의 내용대로 작성했고 HelloData도 마찬가지로 똑같이 작성했습니다. 그리고 웹 브라우저로http://localhost:8080/model-attribute-v1?username=a&age=abc이렇게 의도적으로 age에 문자열을 넣었는데요 저도 당연히 BindException이 나올 줄 알았는데MethodArgumentNotValidException가 뜹니다. 구글링해 보니 BindException이랑 MethodArgumentNotValidException이 생기는 원인은 좀 다른 것 같은데 왜 전 코드가 강의랑 비슷한데도 예외가 다르게 나올까요? +) 오류 메시지입니다. 2024-02-10T17:28:59.250+09:00 WARN 17376 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String hello.springmvc.basic.request.RequestParamController.modelAttributeV1(hello.springmvc.basic.HelloData): [Field error in object 'helloData' on field 'age': rejected value [abc]; codes [typeMismatch.helloData.age,typeMismatch.age,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [helloData.age,age]; arguments []; default message [age]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'age'; For input string: "abc"]] ]
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestParam Map<String, Object> paramMap에서 Object로 써야만 하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]request.getParameter()의 결과는 항상 String이라고 이해하고 있습니다. 즉, request.getParameter("age")도 String이기 때문에 int로 변환하려면 다음처럼 Integer.parseInt()를 사용했었습니다.int age = Integer.parseInt(request.getParameter("age")); 그런데 이번 시간에 작성한 다음 코드에서@ResponseBody @RequestMapping("/request-param-map") public String requestParamMap(@RequestParam Map<String, Object> paramMap) { log.info("username = {}, age = {}", paramMap.get("username"), paramMap.get("age")); return "ok"; } @RequestParam Map<String, Object> paramMap여기선 Object로 써져 있는데, 실무에서 Object로 써야만 하는 경우도 있나요? 제가 생각한 게 맞다면 파라미터의 값이 코드에서 String로 쓰이든 int로 쓰이든 간에, Map에선 모두 String 값으로 존재할 것 같았는데(age의 경우도 20이 아닌 "20"인 상태로 이해했습니다.) <String, String>이 아닌 <String, Object>로 써야만 하는 경우도 실제로 있는지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
직접등록과 자동등록에서 이해되지 않는 점이 있습니다.
수업에서 @Controller 사용시 자동으로 스프링빈 등록이 되고 SpringMemberFormControllerV1 클래스의 클래스 레벨에 @Controller, 메서드 레벨에 @RequestMapping을 사용하여 자동등록을 한다는 점은 이해를 했습니다. 이후 ServletApplication에 @Bean을 사용하여 직접 등록을 하는 경우,ServletApplication에 @Bean 애노테이션으로 직접 등록을 한 상태에서SpringMemberFormControllerV1 클래스의 @Controller, @RequestMapping을 각각 없애고(둘다 없애도 보고 하나씩만 남겨보기도 했습니다.)url에 /springmvc/v1/members/new-form 을 요청했더니404 에러가 뜨는데 ServletApplication에 @Bean을 사용해 직접 등록을 하는 경우에도 SpringMemberFormControllerV1 클래스의 @Controller, @RequestMapping 애노테이션은 유지를 해야하는건가요?만약 그렇다면 자동등록이 되어있는 상태에서 왜 굳이 수동등록을 또 하는지,그게 아니라면 수동등록을 할 경우 SpringMemberFormControllerV1 클래스는 어떻게 수정을 해야하는지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
롬복 오류인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]getInstance 메서드를 테스트코드에서 가져오지 못합니다. getInstance 메서드에는 노란색 줄이 그여있구요, 롬복의 getter 를 대신 쓰라고 권하는데 여튼 강의대로 안되어요. 어떻게 해결하죠?