微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot 中的 Axon extensions.mongo 4.3:noSuchMethodError - com.mongodb.MongoClient

如何解决Spring Boot 中的 Axon extensions.mongo 4.3:noSuchMethodError - com.mongodb.MongoClient

我正在尝试在具有 Axon 的 mvn clean install 依赖项的 Spring Boot 项目上运行 extensions.mongo。 mongo 数据库已在 docker 容器中启动并运行

在我的 pom 中:

<dependency>
    <groupId>org.axonframework.extensions.mongo</groupId>
    <artifactId>axon-mongo</artifactId>
    <version>4.3</version>
</dependency>

然后我有一个@Configuration 类,其中包括以下成员:

 @Value("${spring.data.mongodb.host:127.0.0.1}")
    private String mongoHost;

    @Value("${spring.data.mongodb.port:27017}")
    private int mongoPort;

    @Value("${spring.data.mongodb.database:user}")
    private String mongoDatabase;

    @Bean
    public MongoClient mongoClient() {
        var mongoFactory = new MongoFactory();
        mongoFactory.setMongoAddresses(Collections.singletonList(new ServerAddress(mongoHost,mongoPort)));

        return mongoFactory.createMongo();
    }

然后在运行 mvn clean install 时我得到这个堆栈跟踪:

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoClient' defined in com.springbank.user.core.configuration.AxonConfig: Bean instantiation via factory method Failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.MongoClient]: Factory method 'mongoClient' threw exception; nested exception is java.lang.NoSuchMethodError: 'com.mongodb.connection.ConnectionPoolSettings$Builder com.mongodb.connection.ConnectionPoolSettings$Builder.maxWaitQueueSize(int)'
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.MongoClient]: Factory method 'mongoClient' threw exception; nested exception is java.lang.NoSuchMethodError: 'com.mongodb.connection.ConnectionPoolSettings$Builder com.mongodb.connection.ConnectionPoolSettings$Builder.maxWaitQueueSize(int)'
Caused by: java.lang.NoSuchMethodError: 'com.mongodb.connection.ConnectionPoolSettings$Builder com.mongodb.connection.ConnectionPoolSettings$Builder.maxWaitQueueSize(int)'

解决方法

MongoClient 在类路径上可用时,Spring Boot 将自动配置它。您只需要在您的 spring.mongo 中指定正确的 application.properties 属性(您已经根据您的配置使用了该属性)。

所以简单的解决方法是删除这个 @Bean 方法。

如果您真的想使用那个 MongoFactory,您需要弄清楚哪个版本的 MongoDB(在本例中为 Mongo 客户端)与它兼容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。