티스토리 뷰

반응형

참고로 org.mongodb:mongodb-driver-sync:jar:3.8.2 버전을 사용했고, 예제에 있는 코드를 참고하여 연결정보를 만들려고 하는데 희안하게 MongoClientSettings 사용하려고 했는데,  해당 라이브러리를 찾지 못하는 이상한 상황이 생겼다.

 

 

특이한점은 SpringBoot 를 이용해서 웹서비스를 제공하고 있는데, 해당 의존성을 올리면 import 못하는 문제가 해결되었다.

하지만, 호환성 문제가 검증안되서 찜찜해서 다른 해결방법을 찾기위해 두 차이가 뭔지 확인해 보았다.

- 2.0.9.RELEASE -> 2.1.4.RELEASE 

import com.mongodb.MongoClientSettings;  // <- import 에러
....

final String host = "127.0.0.1";
final int port = 10004;
final MongoCredential credential = MongoCredential.createCredential(
        user, defaultDatabaseName, password.toCharArray());

final MongoClientSettings setting = MongoClientSettings.builder()
        .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress(host, port))))
        .credential(credential)
        .build();
client = MongoClients.create(setting);
...

원인확인

maven 에서 dependency:tree 를 이용해서 비교해보니... 다음과 같이 다른 버전으로 import 되는 현상을 발견했다.

[INFO] +- org.mongodb:mongodb-driver-sync:jar:3.8.2:compile
[INFO] |  +- org.mongodb:bson:jar:3.6.4:compile
[INFO] |  \- org.mongodb:mongodb-driver-core:jar:3.6.4:compile

해결방법

결국 하위 의존성의 버전을 직접 맞춰주는걸로 해결을 했다. maven 기준으로는 pom.xml 을 다음과 같이 수정하면 된다.

그러면 mongodb bson 과 driver-core 버전이 3.8.2 로 동일하게 맞춰지고 import 에러나는 문제도 해결되었다.

 ...
 <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongodb-driver-sync</artifactId>
      <version>3.8.2</version>
      <exclusions>
          <exclusion>
              <groupId>org.mongodb</groupId>
              <artifactId>bson</artifactId>
          </exclusion>
          <exclusion>
              <groupId>org.mongodb</groupId>
              <artifactId>mongodb-driver-core</artifactId>
          </exclusion>
      </exclusions>
  </dependency>
  <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>bson</artifactId>
      <version>3.8.2</version>
  </dependency>
  <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongodb-driver-core</artifactId>
      <version>3.8.2</version>
  </dependency>
  ...

의존성이 복잡하게 꼬이기 시작하면 꼭 maven 에서 의존성 트리를 꼭 확인해보는 습관을 갖도록 하자.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함