[SpringBoot] WebSocket 연결 실패: WebSocketConfig 위치 문제

eunoia73·2025년 1월 9일

trouble shooting

목록 보기
8/16

❗️문제 상황 : 웹 소켓 연결 test를 하던 도중, 연결이 안 되고 'finished'라고 나오는 문제

💡 문제 원인
WebSocketConfig.java 파일 위치가 원인이었다

  • Spring Boot는 @SpringBootApplication이 선언된 클래스(일반적으로 Application.java)를 기준으로 컴포넌트 스캔을 수행한다.

  • Application.java 파일이 위치한 패키지와 그 하위 패키지에서만 @Configuration, @Component, @Service 등의 어노테이션이 붙은 클래스를 스캔한다.

  • WebSocketConfig.java 파일이 Application.java와 다른 패키지에 위치하면, Spring Boot가 해당 설정 파일을 스캔하지 않아 WebSocket 설정이 적용되지 않는다.

WebSocketConfig.java 파일과 Application.java 파일이 같은 위치에 있어야 SpringBoot 애플리케이션이 컴포넌트 스캔을 통해 설정 파일을 찾는다.
⭐️ Application.java파일이 위치한 패키지와 그 하위 패키지에서 컴포넌트를 스캔한다.


✅ 해결 방법

WebSocketConfig.java 파일의 위치 변경

WebSocketConfig.java 파일을 Application.java와 동일한 패키지로 이동하거나, 그 하위 패키지로 옮긴다.

✅ 재발 방지 tip

@SpringBootApplication 클래스가 프로젝트의 루트 패키지에 위치하도록 설계하기 -> 모든 하위 패키지를 스캔할 수 있도록 보장한다.


WebSocketConfig.java 파일


@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

	@Override
	public void configureMessageBroker(MessageBrokerRegistry config) {
		config.enableSimpleBroker("/topic");
		config.setApplicationDestinationPrefixes("/app");
	}

	@Override
	public void registerStompEndpoints(StompEndpointRegistry registry) {
		registry.addEndpoint("/ws");
	}

}

Config 파일 위치 변경 후 결과

0개의 댓글