본문 바로가기

Java/Spring

"No annotated classes found for specified class/package" 오류와 함께 dispatcher가 URI와 매핑된 컨트롤러를 찾지 못하는 문제

이 문서의 내용

    테스트 환경 및 주요 아젠다

    더보기

    이 프로젝트의 개발 환경

    • 개발 언어 및 환경
      • OpenJDK 12
      • Spring: spring-mvc: 5.0.2.RELEASE
      • Tomcat: tomcat-jdbc: 8.5.27
      • Gradle 7.3
    • 기타 환경
      • macOS Sonoma 14.1.1
      • IntelliJ IDEA 2020.3 Ultimate Edition

    DispatcherServlet이 URI와 매핑된 컨트롤러를 찾지 못하고 있습니다. 관련 오류 메시지는 다음과 같습니다.

    org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI {URI 경로} in DispatcherServlet with name {dispatcher 이름}

    스프링 애플리케이션은 톰캣에서 실행되고 있습니다.

    톰캣이 실행되며 No annotated classes found for specified class/package 오류가 발생합니다.

    org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions No annotated classes found for specified class/package {설정 클래스 이름}

    문제 해결: DispatcherServlet 설정 확인

    web.xml 파일에서 설정하는 DispatcherServlet의 contextConfiguration 항목을 확인합니다.

    이 파라미터에서는 스프링 설정 클래스 목록을 지정합니다.

    <servlet>
    	<servlet-name>dispatcher</servlet-name>
    	<servlet-class>
    		org.springframework.web.servlet.DispatcherServlet
    	</servlet-class>
    	...
    	<init-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			config.MvcConfig
    			config.ControllerConfig
    		</param-value>
    	</init-param>
    	...
    </servlet>

    예제에서 등록하고 있는 스프링 설정 클래스는 config.MvcConfigconfig.ControllerConfig입니다.

    예제의 두 클래스의 패키지 경로가 잘못 입력되어 있습니다. 설정 클래스의 FQCN(Full Qualified Class Name)을 올바르게 지정하는 것으로 해결되었습니다.

    정리 및 복습

    • DispatcherServlet에서 No mapping found for HTTP request with URI {URI 경로} in DispatcherServlet with name {dispatcher 이름} 오류가 발생하고 있습니다.
    • 톰캣이 실행되며 No annotated classes found for specified class/package 오류가 발생합니다.
    • DispatcherServlet 설정에서 스프링 설정 클래스의 FQCN가 올바르게 입력되어 있는지 확인합니다.