본문 바로가기
Error

Spring data Elasticsearch 사용 중 발생한 ApplicationContext 초기화 예외

by Ahngyuho 2023. 8. 18.

문제 발견 콘솔 화면

핵심 예외 메시지

Invalid bean definition with name 'elasticsearchClient' defined in class path resource [com/example/demo/config/MyClientConfig.class]

 

예외 원인

해당 예외의 원인은 elasticsearchClient라는 빈이 유효하지 않은 정의이기 때문입니다.

 

문제 상황

이건 제가 ElasticsearchClient만 따로 사용하려고 빈 등록을 해둔 상태였습니다.

사실 여태 제가 Spring data Elasticsearch를 사용하는 것이 아닌 elasticsearch-rest-client만 의존성에 추가해서 사용하고 있는 줄 알았습니다

그래서 빈 등록을 저렇게 해둔 거였는데 Build.gradle 파일을 살펴보던 중 제가 Spring data Elasticsearch를 의존성에 추가해둔 사실을 발견했습니다

 

Build.gradle 파일을 확인하게 된 이유는 elasticsearch-rest-client를 사용하는 중 어떤 의문이 들어서였습니다. 그 의문이란 ElasticSearch에 요청을 보내기 위해 많은 불편함을 느끼면서 과연 방법이 저 라이브러리를 사용하는 방법밖에 없을까? 하는 것이었습니다.

 

그래서 Spinrg boot를 사용하는데 좀 더 쉽게 Elasticseach에 접근할 수 있는 라이브러리 혹은 프레임워크가 없을까? RedisElasticsearchNoSQL이라는 범주에 속하는데 RedisSpring data Redis가 존재하는데 Elasticserach는 이런게 없을까? 하고 찾아보니 존재했습니다

 

 

그래서 Srping data Elasticsearch 공식 문서를 확인해서 설정 클래스를 다시 만들었습니다.

@Configuration
public class MyClientConfig extends ElasticsearchConfiguration {
    @Override
    public ClientConfiguration clientConfiguration() {
        return ClientConfiguration.builder()
                .connectedTo("3.36.169.149:9200")
                .build();
    }
}

잘 통과합니다...

 

그리고 추가로 제가 만든 설정 클래스 하나로 어떤 빈들이 추가로 등록되는지 궁금해서 확인해 봤습니다.

 

Spring data Elasticsearch 사용법은 추후 포스팅할 예정입니다!