Java 파일에서 @Controller 를 선언해서 사용하려 하는데 아래와 같은 에러가 발생했다.
Controller cannot be resolved to a type
위 에러는 컨트롤러를 유형으로 확인할 수 없다는 것이었다.
IDE : Eclipse
JDK : Java 17
Server : Apache Tomcat 9.0
Framework : Spring MVC
Build Tool : Maven
Application Type : 웹 애플리케이션 (Spring MVC 프레임워크를 기반으로 한 Maven 웹 애플리케이션)
이 오류는 주로 Spring MVC에서 @Controller 어노테이션을 사용할 수 없을 때 발생합니다.
이는 필요한 라이브러리가 누락되었거나, Maven 프로젝트에서 의존성이 제대로 설정되지 않았기 때문일 가능성이 큽니다.
Spring MVC의 @Controller를 사용하려면, spring-webmvc 라이브러리를 프로젝트에 추가해야 합니다.
이를 위해 pom.xml에 다음과 같은 의존성을 추가하세요.
pom.xml
: Maven 프로젝트에서 의존성 관리와 빌드를 자동화하는 데 중요한 역할을 한다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.22</version>
</dependency>
의존성을 추가한 후, Eclipse에서 Maven 프로젝트를 업데이트해야 합니다.
Eclipse 메뉴에서 Project > Update Maven Project 또는 우클릭 후 Maven > Update Project를 선택하세요.
@controller을 선언하고자 하는 java 파일에서 아래와 같이, 어노테이션을 선언해야 합니다.
import org.springframework.stereotype.Controller;
Project Build Path에 Maven 의존성들이 포함되어 있는지 확인하세요.
만약 프로젝트 경로에서 Maven 의존성이 누락되었다면 Build Path에 추가해야 합니다.
pom.xml 에 Spring MVC와 관련된 Spring Web, Spring Context Dependency 필수 의존성을 추가 해야합니다.
최종적으로, Spring Web MVC Dependency 을 포함해서 아래와 같이 의존성을 추가해야 합니다.
Spring Web Dependency
: Spring Framework의 웹 관련 핵심 기능을 제공하는 라이브러리입니다.
: 주로 HTTP 요청과 응답 처리, REST API 개발 등의 기능을 제공합니다.
Spring Context Dependency
: Spring의 핵심 기능인 IoC (Inversion of Control) 컨테이너를 제공하는 라이브러리입니다.
:@Component,@Service,@Controller등의 어노테이션을 통해 빈(bean)을 관리할 수 있습니다.
Spring Web MVC Dependency
: Spring MVC(Model-View-Controller) 패턴을 지원하는 라이브러리입니다.
: 웹 애플리케이션에서 컨트롤러, 모델, 뷰 간의 상호작용을 담당합니다.
<dependencies>
<!-- Spring Web Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.22</version>
</dependency>
<!-- Spring Context Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.22</version>
</dependency>
<!-- Spring Web MVC Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.22</version>
</dependency>
</dependencies>