학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 8:55분 즈음부터 말씀하시는 내용이 DB에 쿼리까지 다 날려서 회원가입도 되고 뭐 아이디 찾기, 멤버 찾기 등 다 되고 마지막에 테스트가 끝나면 데이터를 롤백한다고 하셨는데요.(정확히는 반영을 안함). 그래서 실제로 테스트 실행을 해보면 정상적으로 동작했다는 뜻에서 Run 창에 모두 초록불로 들어와있지만 DB에서는 아무것도 반영안되어있는게 보이는데요, 그럼 실제로 테스트 할때도 DB에는 들어갔는지 실물확인은 못한채, Run창에서 초록불로 정상적으로 동작했다는 것으로만 확인을 해야하나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. iOS 개발을 오래하다가 BE 개발 공부를 시작했습니다. iOS 개발을 하면서 MVC, MVVM 등 다양한 아키텍쳐 패턴을 사용했었는데 이번 강의에서 사용하시는 ModelView라는 건 마치 ViewModel과 같다는 생각이 들어서요! 1) 현재 ModelView라고 쓰이는 객체는 흔히 말하는 ViewModel과 동일한 느낌으로 봐도 무방할까요?(ModelView는 ~View이기에 View로 보이는 한편, ViewModel ~Model이기에 Model로 느껴지는 듯합니다.) 2) 혹 둘의 차이가 있다면 어떤 부분이 차이가 있을지도 궁금합니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 비슷한 질문이 몇 개 올라와 있는데 해결되지 않아 질문합니다. H2에서 테이블 생성하고 데이터 insert한 후 서버에서 회원 목록을 클릭하면 Whitelabel Error가 뜹니다. 2025-03-17T22:19:31.466+09:00 ERROR 2315 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: java.lang.IllegalArgumentException: No DataSource specified] with root cause java.lang.IllegalArgumentException: No DataSource specified at org.springframework.util.Assert.notNull(Assert.java:181) ~[spring-core-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:104) ~[spring-jdbc-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.2.3.jar:6.2.3] at hello.hello_spring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:119) ~[classes/:na] at hello.hello_spring.repository.JdbcMemberRepository.findAll(JdbcMemberRepository.java:77) ~[classes/:na] at hello.hello_spring.service.MemberService.findMembers(MemberService.java:42) ~[classes/:na] at hello.hello_spring.controller.MemberController.list(MemberController.java:40) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run (ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run (TaskThread.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at java.base/ java.lang.Thread.run (Thread.java:840) ~[na:na] application.properties에는 spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name = org.h2.Driver 으로 작성되어 있습니다. test.mv.db를 삭제하고 다시 실행해 테이블을 만들어도 똑같은 오류가 납니다 ㅜㅜ
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] @Slf4j public class MyHandlerExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { 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); } return null; } } 만약 HandlerExceptionResolver에서 null을 반환하게 되면은.. 그러면 스프링 기본 로직인 basicErrorController에서 /error 를 호출해서 해결하게 되는 것이 아닌가요? basicErrorController를 거치지 않고 그냥 WAS로 예외가 던져지나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] API 예외 처리 - HandlerExceptionResolver 시작 강의에서, "예외가 발생해서 서블릿을 넘어 WAS까지 예외가 전달되면 HTTP 상태코드가 500으로 처리된다." 라고 하셨는데 예외가 만약 RuntimeException 과 같은 경우면 500에러로 반환 되는 것인가요? 근데 만약 상태코드가 지정된 예외라면.. (ex. sendError(404) 라면 어떻게 되나요? 이 경우는 404 에러로 리턴되지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 내용중에 " 조인에 대해서도 당연히 지원한다." 라고 되어있는 ppt 내용중에서, 이렇게 join을 사용하는 부분이 있는데, 여기에 있는 join이 left join이랑 다른 것이고 inner join이랑 다른 개념인건가요? “기능 살펴보기” 부분에도 그냥 join도 있고 innerjoin도 있고, left join도 있던데 그냥 join은 무슨 의미인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 1)“JPA와 상속 - 조회” 부분에서, 개발자는 Album album = jpa.find(Album.class, albumId); JPA는 SELECT I.*, A.* FROM ITEM I JOIN ALBUM A ON I.ITEM_ID = A.ITEM_ID 이렇게 처리해준다고 하는데, Album를 찾는거면 from album에 join이 item이 되어야 하는게 아닌건가요? 2)“지연로딩” 부분에서, 실제로 team의 속성인 getName()을 사용할 때 생성되는 쿼리가 select * from team이 아니라, select * from team where member_id = ~~ 이런 쿼리가 날라가는게 맞지 않나요?
client가 main-backend 서버로 Rest 요청(Http 요청)을 보내면, main-backend 서버가 이를 처리한 다음 sub-backend server로 Rest 요청을 보내고 sub-backend 서버는 해당 요청을 redis pub/sub을 이용해서 spring webflux로 구현된 websocket 서버로 전달한 다음 websocket 서버가 해당 요청에 대한 응답을 받아야 하는 client 들에게 메세지를 전달해주는 구조로 구성되어 있을 때, 만약 client가 응답을 늦게 받는 상황이 생겼을 때 어디에서 병목이 생긴 것인지 파악을 할 수 있었으면 좋겠습니다. 그래서 main-backend 서버에서 sub-backend 서버로 요청을 보낸 시각, sub-backend 서버에서 이 요청을 받은 시각, 그리고 sub-backend 서버에서 이 요청을 다시 redis pub/sub으로 내보낸 시각, 그리고 websocket 서버에서 이 요청을 받은 시각, 그리고 client로 응답을 내보낸 시각을 다 측정하고 싶은데 어떤 식으로 하는 게 좋을까요? 로그를 남긴다면 어떤 식으로 남기는 것이 좋을지 예제 코드가 함께 있으면 좋을 것 같습니다. 그 외에 다른 방법이 있다면 더 구체적으로 알 수 있으면 좋을 것 같습니다. 시각화도 궁금하지만, 우선 구현 코드부터 알면 좋을 것 같습니다.
안녕하세요 김영한 개발자님 강의 감사합니다! 강의 내용과 직접적인 연관은 없을 수 있지만 질문이 있습니다... 혹시 Spring 서버에서 또 다른 SpringMVC 서버 또는 Spring Webflux 서버로 요청을 보내고 또 그 서버에서 Client로 요청을 보내는 구조에서 메세지 전송 지연이 발생했을 때 어느 부분이 병목인지 파악하고자 한다면 어떤 방법을 사용하면 좋을까요....? 제가 아직 지식이 짧아서 더 경험이 많으신 개발자분께서는 이런 상황일 때 어떻게 하실지 궁금합니다... ㅠ_ㅠ Rest 요청이 들어온 시점에 해당 시각을 로그로 남기고, 응답을 보내는 시점에 해당 시각을 로그로 남겨서 판단하는 방법 외에 더 좋은 방법이 있을까요......?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 어떤 것이 문제인지 잘 모르겠습니다. springConfig도 정확히 입력했고 gradle파일과 properties파일도 정확히 작성했습니다. H2도 켜놓은 상태인데 오류가 나오네요. Member에 있는 데이터도 다 지웠고요. java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@6108fd23 testClass = hello.hello_spring.service.MemberServiceIntegrationTest, locations = [], classes = [hello.hello_spring.HelloSpringApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@6f204a1a, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@7b4c50bc, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@491b9b8, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@5a5a729f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@1500b2f3, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@3aa078fd, org.springframework.test.context.support .DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@6e5c6e5c], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:200) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:139) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:160) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/ java.util.stream .ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/ java.util.stream .AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/ java.util.stream .AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/ java.util.stream .ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.base/ java.util.stream .AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/ java.util.stream .ReferencePipeline.forEach(ReferencePipeline.java:596) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController' defined in file [C:\Users\deukr\hello-spring\hello-spring\out\production\classes\hello\hello_spring\controller\MemberController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'springConfig' defined in file [C:\Users\deukr\hello-spring\hello-spring\out\production\classes\hello\hello_spring\SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.hello_spring.repository.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,springDataJpaMemberRepository
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 질문 jsp 실습 실행하고 있습니다. localhost.8080으로 new-form.jsp 실행시 white label error page가 발생합니다. 1. WEB-INF/views로 옮기기 2. application.properties에 경로 추가 3. build.gradle에 추가 전부 다 해보았는데 해결하지 못하였습니다. 어디 부분이 틀린걸까요? 경로는 WEB-INF/views으로 옮기기 위해 강의의 members/..와는 다르게 설정해둔 상태이고, 이에 따라 주소도 http://localhost:8080/members.jsp 로 연결했습니다. 전체 프로젝트 코드 (구글 드라이브) https://drive.google.com/drive/folders/1n4M_uWcow97Be-IWyYC-7IHnO0FqWIxE?usp=drive_link
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. PostMan에서 Get요청으로 보내면 김영한님이 하신거처럼 { "message": "잘못된 사용자", "status": 500 } 잘나오는데 POST요청으로 보내면 다음과 같이 나옵니다. { "timestamp": "2025-03-15T02:09:39.943+00:00", "status": 405, "error": "Method Not Allowed", "path": "/api/members/ex" } @RequestMapping은 모든 메서드(GET,POST,PUT등등)의 요청을 처리하지않나요? 그런데 오류가 나는 이유를 잘 모르겠습니다. 로그는 다음과 같이 찍혔습니다. 2025-03-15T11:09:39.942+09:00 WARN 17652 --- [exception] [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported] 답변해주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 혹시 강의대로 똑같이 했는데 오류가 떠서 질문 남깁니다ㅠㅠ 오류 java : cannot find symbol symbol : class Controller 무엇이 문제일까요ㅠ.. 따로 건든것도 없습니다 .
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Test를 만들 때에도 컴퓨터 설정도 확인해봤는데 한국어로 되어 있고 아무 이상이 없었는데 en이 default로 설정되어 있는 것 같아서 @Test void helloMessage() { Locale.setDefault(Locale.KOREA); String result = ms.getMessage("hello", null, null); assertThat(result).isEqualTo("안녕"); } 이런 식으로 테스트를 진행했더니 정상적으로 초록색 뜨더라구요. messages_en.properties를 추가하자 마자 웹에서 영어로 밖에 나오질 않습니다. 컨트롤러에 Locale.setDefault(Locale.KOREA); 이렇게 추가 해줬는데도 영어로 나오네요 크롬 설정에도 한국어가 1순위로 되어있는데 어떤 걸 손봐야 할까요..? Http Request Header에 accept-language: 가 ko,en-US;q=0.9,en;q=0.8 이렇게 되어있네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니요 비슷한내용은 있으나 문제가 다릅니다. 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] 오류메시지는 다음과 같으며 이미 1.8버젼으로 설정이 되어있는데 오류메시지가 출력됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 김영한 님이 올리신 코드를 그대로 내려받거나, 새로 스피링부트 프로젝트를 생성해도 한 30초에 한번씩 계속 새로고침이됩니다. 계속 자동 동기화가 되고 있는 것 같아요 설정이나 프로포티스를 건들이거나 하지 않았는데 계속 자동 빌드가 되어서 수정중인 파일이 닫히고를 반복해요 ㅜ 'void org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact.<init>(org.gradle.api.provider.Provider)'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MemberForm은 MVC 패턴 중에 model에 속한다고 보는게 맞을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] was안에 servletcontainer가 있고 이 컨테이너는 서블릿을 생성하고 관리 ( init() 호출) 클라이언트 요청이 들어오면 적절한 서블릿 실행 ( service() 호출) 서버가 종료되거나 필요 없으면 서블릿 정리 ( destroy() 호출) 위와 같은 역할을 하는데 그럼 spring mvc에서는 서블릿이 1개만 생성(DispatcherServlet) 되는게 맞을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 해당 강의에서 ItemServiceApplication 코드를 보면, @Import(MemoryConfig.class) 이렇게 MemoryConfig라는 빈 설정 클래스를 따로 만들고 Import를 해주었는데, 만약 import를 하지 않는다면 빈 생성이 안되는건가요? MemoryConfig 클래스에 @Configuration만 달아두면 되는 거 아니었나요? 그리고, ItemServiceApplication 코드에 TestDataInit 클래스 빈을 수동으로 추가했는데, 해당 코드가 ItemServiceApplication에 있는 이유가 있을까요? 해당 코드도 Config 클래스를 따로 만들면 되지 않았나 싶어서 여쭤봅니다!