묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
saveAll() 내부에 save()도 내부호출인 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]그 트랜잭션 전파에 대해서 공부하다가 궁금증이 생겼는데JpaRepository의 구현체인 SimpleJpaRepository에서 saveAll() 메서드도 내부에서 save()메서드를 호출하잖아요?그러면 이때 호출되는 save()메서드도 내부호출이니까 @Transactional이 적용이 안되는 건가요?풀어서 말하자면saveAll()이 호출될때 @Transactional로 트랜잭션이 시작됨saveAll() 내부에서 save() 메서드를 호출하지만 내부호출이므로 트랜잭션 전파가 아닌 그냥 save()메서드가 호출됨결과적으로는 트랜잭션이 saveAll() 호출시 하나만 시작되고 save()들은 내부호출이므로 트랜잭션 전파를 받는것이아닌 saveAll()이 호출될때 시작된 트랜잭션을 따름위와 같이 이해하는게 맞을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
트랜잭션 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]8:55분 즈음부터 말씀하시는 내용이 DB에 쿼리까지 다 날려서 회원가입도 되고 뭐 아이디 찾기, 멤버 찾기 등 다 되고 마지막에 테스트가 끝나면 데이터를 롤백한다고 하셨는데요.(정확히는 반영을 안함). 그래서 실제로 테스트 실행을 해보면 정상적으로 동작했다는 뜻에서 Run 창에 모두 초록불로 들어와있지만 DB에서는 아무것도 반영안되어있는게 보이는데요, 그럼 실제로 테스트 할때도 DB에는 들어갔는지 실물확인은 못한채, Run창에서 초록불로 정상적으로 동작했다는 것으로만 확인을 해야하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelView를 ViewModel이라고 이해해도 될까요?(feat.iOS 개발자)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. iOS 개발을 오래하다가 BE 개발 공부를 시작했습니다. iOS 개발을 하면서 MVC, MVVM 등 다양한 아키텍쳐 패턴을 사용했었는데 이번 강의에서 사용하시는 ModelView라는 건 마치 ViewModel과 같다는 생각이 들어서요!1) 현재 ModelView라고 쓰이는 객체는 흔히 말하는 ViewModel과 동일한 느낌으로 봐도 무방할까요?(ModelView는 ~View이기에 View로 보이는 한편, ViewModel ~Model이기에 Model로 느껴지는 듯합니다.)2) 혹 둘의 차이가 있다면 어떤 부분이 차이가 있을지도 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순수 JDBC 회원 목록 Whitelavel Error
[질문 템플릿]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 causejava.lang.IllegalArgumentException: No DataSource specifiedat 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를 삭제하고 다시 실행해 테이블을 만들어도 똑같은 오류가 납니다 ㅜㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
exceptionResolver에서 null 반환
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용] @Slf4jpublic 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로 예외가 던져지나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 예외 상태코드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]API 예외 처리 - HandlerExceptionResolver 시작 강의에서,"예외가 발생해서 서블릿을 넘어 WAS까지 예외가 전달되면 HTTP 상태코드가 500으로 처리된다." 라고 하셨는데예외가 만약 RuntimeException 과 같은 경우면 500에러로 반환 되는 것인가요?근데 만약 상태코드가 지정된 예외라면.. (ex. sendError(404) 라면 어떻게 되나요? 이 경우는 404 에러로 리턴되지 않나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
QueryDSL 소개2 해결 강의 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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은 무슨 의미인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JPA 소개 강의 관련 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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 = ~~ 이런 쿼리가 날라가는게 맞지 않나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
메세지 전송 지연의 병목 지점 파악 방법2
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로 응답을 내보낸 시각을 다 측정하고 싶은데 어떤 식으로 하는 게 좋을까요?로그를 남긴다면 어떤 식으로 남기는 것이 좋을지 예제 코드가 함께 있으면 좋을 것 같습니다.그 외에 다른 방법이 있다면 더 구체적으로 알 수 있으면 좋을 것 같습니다.시각화도 궁금하지만, 우선 구현 코드부터 알면 좋을 것 같습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
메세지 전송 지연의 병목 지점 파악 방법
안녕하세요 김영한 개발자님강의 감사합니다!강의 내용과 직접적인 연관은 없을 수 있지만 질문이 있습니다...혹시 Spring 서버에서 또 다른 SpringMVC 서버 또는 Spring Webflux 서버로 요청을 보내고또 그 서버에서 Client로 요청을 보내는 구조에서 메세지 전송 지연이 발생했을 때어느 부분이 병목인지 파악하고자 한다면 어떤 방법을 사용하면 좋을까요....?제가 아직 지식이 짧아서 더 경험이 많으신 개발자분께서는 이런 상황일 때 어떻게 하실지 궁금합니다... ㅠ_ㅠRest 요청이 들어온 시점에 해당 시각을 로그로 남기고, 응답을 보내는 시점에 해당 시각을 로그로 남겨서 판단하는 방법 외에 더 좋은 방법이 있을까요......?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 데이터 JPA 7분까지 따라 친 후 오류 메시지
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp white label error 관련 질문 드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
PostMan에서 POST요청 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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] 답변해주시면 감사하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HelloController 어노테이션 인식안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 혹시 강의대로 똑같이 했는데 오류가 떠서 질문 남깁니다ㅠㅠ오류 java : cannot find symbolsymbol : class Controller무엇이 문제일까요ㅠ.. 따로 건든것도 없습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
messages_en.properties 작성 이후 웹에서 한글로 나오지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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 이렇게 되어있네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello-spring 프로젝트 생성후 인텔리제이에서 가져오는처음부터 에러가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니요 비슷한내용은 있으나 문제가 다릅니다.3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]오류메시지는 다음과 같으며 이미 1.8버젼으로 설정이 되어있는데 오류메시지가 출력됩니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Gradle-groovy/Kotlin
스프링 프로젝트 생성시에 강의에서는 Gradle로 만들어라고 했는데 Gradle-groovy랑 Kotlin으로 나눠져 있더라고요.둘의 차이가 무엇인가요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 자동 빌드 자동 동기화 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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)'
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberForm 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberForm은 MVC 패턴 중에 model에 속한다고 보는게 맞을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
mvc패턴 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]was안에 servletcontainer가 있고 이 컨테이너는 서블릿을 생성하고 관리 (init() 호출)클라이언트 요청이 들어오면 적절한 서블릿 실행 (service() 호출)서버가 종료되거나 필요 없으면 서블릿 정리 (destroy() 호출)위와 같은 역할을 하는데 그럼 spring mvc에서는 서블릿이 1개만 생성(DispatcherServlet) 되는게 맞을까요?