의존성에 대해 갑자기 헷갈려서 총 4가지 질문드립니다. MemberService에 아래와 같은 메서드(Member findMemberById(Long id))가 있고 PostService(다른 Service 클래스)에서 memberId로 Member를 조회해야 할 일이 있습니다. 이 경우 아래 메서드를 이용하기 위해 PostService 클래스에서 private final MemberService memberService 형태로 멤버변수로 포함한다고 가정하겠습니다.(memberService.findMemberByMember(id) 로 이용하기위해) public Member findMemberById(Long id) { return memberRepository.findById(id) .orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); } Q1) PostService에서 MemberService를 생성자 주입을 통해 받아서 이용할 경우 MemberService의 의존성(예를 들면 MemberRepository 등의 MemberService 클래스에서 사용하는 클래스들)까지 PostService에 포함되는 것일까요? Q2) 의존성이라는게 단순히 생성자 주입으로 받았던 멤버 클래스들 뿐 아니라 내부 메소드에서 매개변수로 받은 클래스가 있다면 이 또한 의존성인가요?(import 로 포함된 클래스들을 모두 의존클래스로 보면 될지, 아니면 내부에서 사용하는 모든 객체를 의존성으로 보면될지 >> 같은 패키지의 경우 import 안하는걸 고려했을때 내부에서 객체로 이용하지만 같은 패키지라 import 안되는걸 고려) Q3-1) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는 거라면 PostService에서 Member를 조회하기 위해서는 memberService.findMemberById(id) 로 조회하기 보단 MemberRepository를 주입받아서 memberRepository.findById(id).orElseThrow(() -> new BusinessLogicException(MEMBER_NOT_FOUND)); 형태로 변경하는게 맞을지? Q3-2) Q1의 답변에서 MemberService의 의존성까지 PostService에 포함되는게 아니라면 PostService에서 MemberService가 아닌 MemberRepository로 조회하는게 맞을지? Member 조회가 여러곳에서 사용되고 Member findMemberById(Long id) 메소드의 내용이 여러곳에서 중복되는 걸 생각했을때 처음에는 단순히 member 조회가 여러곳에서 일어나고 공통된 내용이 반복되어 MemberService의 findMemberById 로 묶어서 사용하는게 맞다고 생각했는데 의문이 들었고 예전에 의존성은 최대한 줄이라고 하셨던게 생각나서 질문드립니다.
강의를 중간에 distinct를 적용하지 않으면 포스트맨에서 결과가 중복되게 나오고, 쿼리도 inner join으로 되어야 하는데 이상합니다ㅜ 코드가 모두 동일한데, 콘솔에 찍어봐도 4건이 아닌 2건 밖에 조회가 되지 않고 결과도 2건으로 나옵니다.. 또한, 강의에서는 inner join이 나가는데 제 코드는 join이 나갑니다..뭐가 문제일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 cmd창으로 실행을 하였는데 강사님이 알려주신대로 해봤는데 gradlew.bat 이 실행이 안되네요 저는 windows, 자바 17버젼이고 스프링은 3. 버전을 사용하고 있습니다. 도와주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] C:\Users\권순형\work_spring\hello-spring\build\libs>java -jar hello-spring-0.0.1-SNAPSHOT.jar . ____ _ /\\ / ___'_ __ ( _)_ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.0.5) 2023-03-28T22:37:12.803+09:00 INFO 16492 --- [ main] h.hellospring.HelloSpringApplication : Starting HelloSpringApplication v0.0.1-SNAPSHOT using Java 19.0.2 with PID 16492 (C:\Users\沅뚯닚??work_spring\hello-spring\build\libs\hello-spring-0.0.1-SNAPSHOT.jar started by 沅뚯닚??in C:\Users\沅뚯닚??work_spring\hello-spring\build\libs) ibs) 2023-03-28T22:37:12.807+09:00 INFO 16492 --- [ main] h.hellospring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default" 2023-03-28T22:37:13.668+09:00 INFO 16492 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http) 2023-03-28T22:37:13.678+09:00 INFO 16492 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-03-28T22:37:13.678+09:00 INFO 16492 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.7] 2023-03-28T22:37:13.777+09:00 INFO 16492 --- [ main] o.a.c.c.C.[Tomcat].[ localhost ].[/] : Initializing Spring embedded WebApplicationContext 2023-03-28T22:37:13.779+09:00 INFO 16492 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 920 ms 2023-03-28T22:37:14.088+09:00 INFO 16492 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '' 2023-03-28T22:37:14.103+09:00 INFO 16492 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 1.632 seconds (process running for 2.006) cmd창에서 이렇게 잘 뜬 것 같은데 localhost 치고 들어가면 안되네요.. 인텔리J에서는 잘 작동합니다..
https://drive.google.com/file/d/1OKpCQpwYWvWjppEIcvzWpSZKy09GAivy/view?usp=sharing 위에는 구글 압축 파일입니다. 다음은 에러 내용입니다. Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid 야생형 코스로 들으려고 하다보니 에러난 부분을 고치기가 어렵고 다른 분들도 같은 질문을 많이 하셨어서, 질문들도 다 확인해보고 저의 코드에서도 해당 부분들을 유심히 보았으나 에러를 잡지 못해서 질문드렸습니다. 위의 에러코드 내용을 미루어보아 orderItems의 값이 null이어서 화면에 나오지 않는다고 생각하여서 그 부분을 확인해보았는데, null로 출력되는 것은 확인하였습니다. html코드의 문제인가 싶어 코드도 계속 확인해보고, 선생님께서 제공해주신 코드파일에 있는 html을 그대로 복사해서 실행해보았는데도 수정이 되지 않아서 질문드렸습니다. 감사합니다. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Mar 28 19:44:33 KST 2023 There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/order/orderList.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:241 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone( AbstractMarkupTemplateParser.java:100 ) at org.thymeleaf.engine.TemplateManager.parseAndProcess( TemplateManager.java:666 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1103 ) at org.thymeleaf.TemplateEngine.process( TemplateEngine.java:1077 ) at org.thymeleaf.spring6.view.ThymeleafView.renderFragment( ThymeleafView.java:372 ) at org.thymeleaf.spring6.view.ThymeleafView.render( ThymeleafView.java:192 ) at org.springframework.web.servlet.DispatcherServlet.render( DispatcherServlet.java:1415 ) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult( DispatcherServlet.java:1159 ) at org.springframework.web.servlet.DispatcherServlet.doDispatch( DispatcherServlet.java:1098 ) at org.springframework.web.servlet.DispatcherServlet.doService( DispatcherServlet.java:974 ) at org.springframework.web.servlet.FrameworkServlet.processRequest( FrameworkServlet.java:1011 ) at org.springframework.web.servlet.FrameworkServlet.doGet( FrameworkServlet.java:903 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:537 ) at org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:885 ) at jakarta.servlet.http.HttpServlet.service( HttpServlet.java:631 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:205 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.tomcat.websocket.server.WsFilter.doFilter( WsFilter.java:53 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.RequestContextFilter.doFilterInternal( RequestContextFilter.java:100 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.FormContentFilter.doFilterInternal( FormContentFilter.java:93 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) at org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:116 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:174 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:149 ) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:166 ) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:90 ) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:493 ) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:115 ) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:93 ) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:74 ) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:341 ) at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:390 ) at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:63 ) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:894 ) at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1741 ) at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:52 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) at java.base/java.lang.Thread.run( Thread.java:833 ) Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:393 ) at org.attoparser.MarkupParser.parse( MarkupParser.java:257 ) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse( AbstractMarkupTemplateParser.java:230 ) ... 48 more Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "item.orderItems[0]. item.name " (template: "order/orderList" - line 46, col 21) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:292 ) at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression( VariableExpression.java:166 ) at org.thymeleaf.standard.expression.SimpleExpression.executeSimple( SimpleExpression.java:66 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:109 ) at org.thymeleaf.standard.expression.Expression.execute( Expression.java:138 ) at org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess( AbstractStandardExpressionAttributeTagProcessor.java:144 ) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess( AbstractAttributeTagProcessor.java:74 ) at org.thymeleaf.processor.element.AbstractElementTagProcessor.process( AbstractElementTagProcessor.java:95 ) at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process( ProcessorConfigurationUtils.java:633 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement( ProcessorTemplateHandler.java:1314 ) at org.thymeleaf.engine.OpenElementTag.beHandled( OpenElementTag.java:205 ) at org.thymeleaf.engine.Model.process( Model.java:282 ) at org.thymeleaf.engine.Model.process( Model.java:290 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.processIterationModel( IteratedGatheringModelProcessable.java:368 ) at org.thymeleaf.engine.IteratedGatheringModelProcessable.process( IteratedGatheringModelProcessable.java:222 ) at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement( ProcessorTemplateHandler.java:1640 ) at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleCloseElementEnd( TemplateHandlerAdapterMarkupHandler.java:388 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:322 ) at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleCloseElementEnd( OutputExpressionInlinePreProcessorHandler.java:220 ) at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleCloseElementEnd( InlinedOutputExpressionMarkupHandler.java:164 ) at org.attoparser.HtmlElement.handleCloseElementEnd( HtmlElement.java:169 ) at org.attoparser.HtmlMarkupHandler.handleCloseElementEnd( HtmlMarkupHandler.java:412 ) at org.attoparser.MarkupEventProcessorHandler.handleCloseElementEnd( MarkupEventProcessorHandler.java:473 ) at org.attoparser.ParsingElementMarkupUtil.parseCloseElement( ParsingElementMarkupUtil.java:201 ) at org.attoparser.MarkupParser.parseBuffer( MarkupParser.java:725 ) at org.attoparser.MarkupParser.parseDocument( MarkupParser.java:301 ) ... 50 more Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1025E: The collection has '0' elements, index '0' is invalid at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.growCollectionIfNecessary( Indexer.java:700 ) at org.springframework.expression.spel.ast.Indexer$CollectionIndexingValueRef.getValue( Indexer.java:664 ) at org.springframework.expression.spel.ast.Indexer.getValueInternal( Indexer.java:102 ) at org.springframework.expression.spel.ast.CompoundExpression.getValueRef( CompoundExpression.java:61 ) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal( CompoundExpression.java:91 ) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue( SpelNodeImpl.java:112 ) at org.springframework.expression.spel.standard.SpelExpression.getValue( SpelExpression.java:338 ) at org.thymeleaf.spring6.expression.SPELVariableExpressionEvaluator.evaluate( SPELVariableExpressionEvaluator.java:265 ) ... 75 more
memberRepository에 member를 저장하고 난 이후, 왜 ModelView mv 값을 생성할 때, save가 아닌, save-result가 들어가나요? ModelView mv = new ModelView("save-result"); viewResolver로 변환된 코드는 "/WEB-INF/views/save-result.jsp" 가 되는데 기존에 썼던 jsp인 WEB-INF/views/save.jsp를 사용하기 위해선 mv를 생성할때, ModelView mv = new ModelView("save"); 가 나와야 알맞은 코드 아닌가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제목 그대로 입니다. 저기 아래에도 같은 질문이 있었는데 그 질문에 대한 답은 intelliJ 콘솔창에서 깨지는 문제에 대한 답변을 하신것같아서 다시 올립니다 ㅠㅠ
깃허브에 따로따로 추가하고 싶지 않아서 사진과 같이 servlet 패키지와 동일한 레벨에 패키지를 추가하여 구동하려고 합니다. 현재 프로젝트 패키징이 war 방식인데 이 상태에서 jar로 변경하지 않고 servlet 패키지를 포함하는 모든 하위 패키지는 webapp 디렉토리로 설정하고, spring 패키지를 포함하는 모든 하위 패키지에서 호출하는 정적 파일들은 webapp 경로가 아닌 resources로 따로따로 잡아줄수 있는 설정이 있을까요? 이렇게 하는 이유는 공부 한 내용을 하나의 프로젝트로 관리하고 싶기 때문입니다. 부탁드립니다.
hello서블릿 강의 이제 막 듣기 시작했는데 webapp디렉토리를 만들고 index.html을 작성하였을 때 왜 localhost:8080/index.html이 아닌 localhost :8080으로 입력하여도 index.html이 열리는지 이유를 말씀해주시지 않았는데 왜그런지 알 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. home.html 에 <a href="/members/new">회원 가입</a> 여기서 /members/new 가 localhost:8080/members/new 로 연결이 되는 것 같은 데 어떻게 가능한건지 잘 모르겠습니다. /members/new 는 절대경로로 알고 있는데 프로젝트 폴더에는 이러한 폴더가 없습니다.
안녕하세요 선생님!! 항상 좋은 강의 해주셔서 감사드립니다 :) 강의에서 new 생성자를 못쓰도록 생성자를PROTECTED로 막으시고 생성 메서드만 사용하도록 하셨는데요. 프로젝트를 진행할 경우나 실무에서 생성 메서드만 통일해서 사용하는 것이 좋을까요 아님 아래 예시와 같이 생성 메서드와 빌더 패턴 둘 다 혼합해서 사용해도 괜찮을까요? Order 클래스의 생성 메서드에서 Setter를 안쓰고 예시와 같이 생성자를 사용해도 괜찮을까요? 감사합니다! Item @Builder private Item(String name, int price, int stockQuantity) { this.name = name; this.price = price; this.stockQuantity = stockQuantity; } Order private Order(OrderStatus status, Member member) { this.status = status; this.member = member; this.orderDate = LocalDateTime.now(); } public static Order createOrder(OrderStatus status, Member member, OrderItem... orderItems) { Order order = new Order(status, member); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } return order; }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에서 어떻게 질문해야지 스냅샷이 선생님이 한것처럼 나오나여?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2023-03-27T20:32:57.394+09:00 ERROR 5304 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. Process finished with exit code 1 이런식으로 오류가 뜨는데 어떻게 해결해야 되는지 모르겠어요..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이제 현업에서는 외장으로 톰캣을 설치해서 사용하기도 하나요?? 학원에서 외장 톰캣 설치하는법으로 배워서 궁금해졌습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] https://drive.google.com/file/d/1OsD2y0IBoug_V0Q37JJHxmgjgmMjGZjJ/view?usp=sharing 캐시삭제, 인텔리제이 재실행을 하여도 프로그램을 실행시키면 home화면이 뜨지 않고 hello화면이 뜹니다. 어떻게 해결해야 할까요?
질문 1. LoginCheckInterceptor.java 에서 preHandle만 만드셨는데 afterCompletion을 만들지않은 이유가 궁금합니다. 애프터의 경우에는 끝나고 호출되는거라고 에러가 떠도 에러값을 로그로 찍을수 있다고 설명해주셨는데 그러면 로그인을 해야하는 상황에서 오류가 걸리면PreHandle에서는 확인을 못하는게 맞는건가요? 질문 2. WebConfig.java 에서 마지막 .excludePathPatterns("/","/members/add","/login","/logout","/css/**","/*.ico","/error"); Path를 추가해서 인증을 거치치않는 URI를 추가하는데 제가 실수로 login에 / 를 안붙이니까 디렉션한 횟수가 너무 많습니다. 하면서 뻑나더라구요 물론 배포하기전에 테스트를 하고 log를 봐서 잡기야 하겠지만 실제 현업에서도 인터셉터를 이러한 방식으로 사용하는건가요?