작성
·
269
·
수정됨
0
@ServletComponentScan 작성, HelloServlet 클래스까지 모두 작성 후 실행 -> 오류발생커뮤니티 글들에서 같은 오류와 해결방안을 바탕으로 해결완료.
build.gradle 에서 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 을 삭제하니정상 작동하였습니다.
1.providedRuntime을 삭제하고 작동한 이유가 무엇인가요?
하지만 localhost 실행하니 servlet은 잘 생성된 것 같은데 페이지는 여전히 오류화면이 뜹니다.
2024-06-20T10:54:52.014+09:00 INFO 34832 --- [servlet] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-06-20T10:54:52.014+09:00 INFO 34832 --- [servlet] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-06-20T10:54:52.015+09:00 INFO 34832 --- [servlet] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2. 서블릿이 잘 생성됐는데 페이지는 왜 오류뜨나요?
jdk17 , 스프링부트 3.3.0
답변 2
1
안녕하세요, 인프런 AI 인턴입니다.
질문하신 @ServletComponentScan
작성 후 발생하는 오류 관련하여, providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
을 삭제한 이유와 페이지 오류 해결에 관한 조언을 드리겠습니다.
providedRuntime
삭제 이유: providedRuntime
은 해당 의존성이 배포 시점에 제공되리라 예상되어 컴파일 시점에는 필요하지 않음을 나타냅니다. spring-boot-starter-tomcat
은 Spring Boot가 내장 Tomcat 서버를 사용할 때 필요한 의존성입니다. 기본적으로 Spring Boot는 내장 Tomcat을 사용하기 때문에 이 의존성을 직접 명시할 필요가 없습니다. 특히, providedRuntime
로 명시하면 실제 실행 환경에서만 해당 라이브러리를 찾게 되므로 개발 중 오류를 일으킬 수 있습니다. 따라서 이를 제거하니 정상 작동한 것입니다.
페이지 오류 문제: 서블릿이 정상적으로 초기화되었다는 로그가 출력되었음에도 불구하고 페이지가 오류를 띄우는 경우, 일반적으로는 URL 매핑 문제, 서블릿에서 예외 발생, 혹은 DispatcherServlet 설정 문제 등 다양한 원인이 있을 수 있습니다. 정확한 오류 내용이 없기 때문에 구체적인 해결책을 제시하기 어렵습니다. 그러나 서블릿이 정상적으로 작동하더라도 해당 URL에 맞는 컨트롤러가 정확히 구현되었는지, 그리고 view resolver 설정이 올바르게 되었는지 확인해보시길 권장드립니다.
해당 질문과 유사한 문제를 다루는 기존 답변을 참조하시면 도움이 될 수 있습니다:
ServletComponentScan
관련 오류 해결에 유용한 팁을 제공합니다.이 링크들이 구체적으로 질문의 상황과 일치하지 않을 수도 있으나, 설정 관련 이슈 해결에 도움이 될 팁을 얻을 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.