스프링 디렉토리 구조에서 시작점 클래스의 위치

김지수·2023년 9월 10일
0

간단한 웹소켓 채팅 서버를 만들어 보는데 자꾸 아래와 같이 빨간 줄이 떴다.

Could not autowire. No beans of 'WebSocketHandler' type found.

위 에러는 WebSocketHandler 빈이 애플리케이션 컨텍스트에 등록되어 있지 않아서 생기는 문제였다.

그 원인을 한참 찾아 헤맸는데, 해답은 위의 캡쳐 화면 안에 있었다.

애플리케이션의 시작점인 WebsocketchatApplication 클래스가 프로젝트 최상위 패키지에 위치하지 않아서 Spring Framework의 컴포넌트 스캔에 문제가 생겼던 것이다.

일반적으로 Spring Boot 애플리케이션의 디렉토리 구조에서 시작점 클래스의 위치는 다음과 같다.

- src
  - main
    - java
      - com
        - example
          - myapplication
            - Application.java (시작점 클래스)
    - resources

(위의 구조에서 com.example.myapplication 패키지는 예시 패키지 이름이며, 실제 프로젝트에서는 패키지 이름을 프로젝트 이름이나 조직 구조에 맞게 지정해야 한다.)

따라서 해당 클래스의 위치를 아래와 같이 옮겨주니 문제가 해결되었다.

주의: 코드 최상단의 package 경로가 맞게 설정되었는지도 확인해보자!

profile
안녕하세요

0개의 댓글