【问题标题】:Unable to deploy application with spring-data-mongodb 1.10.0无法使用 spring-data-mongodb 1.10.0 部署应用程序
【发布时间】:2018-09-18 05:17:12
【问题描述】:

我正在尝试从 spring-data-mongo 1.9.5 迁移到 1.10.0 以使用 noCursorTimeout() Query 类中的方法,但我在尝试部署应用程序时遇到错误:

原因:org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/properties-context.xml] 中定义名称为“com.example.util.properties.MongoPropertiesConfiguration#7dc57a65”的 bean 创建错误:在设置构造函数参数时无法解析对 bean 'mongoTemplateReplicaSet' 的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/mongo-context.xml] 中定义名称为“mongoTemplateReplicaSet”的 bean 创建错误:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“xxxxxx”的 bean 时出错:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean]:未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean.() 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 在 org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:648) 在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:145) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ... 68 更多

MongoRepositoryFactoryBean 好像没有默认构造函数了。

这是我的spring mongo配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:mongo="http://www.springframework.org/schema/data/mongo"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
   http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.10.xsd">

<bean id="mongoServer" class="com.mongodb.ServerAddress">
    <constructor-arg type="java.lang.String" name="host" value="localhost"/>
    <constructor-arg type="int" name="port" value="27017"/>
</bean>
<bean id="mongoServerList" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <ref bean="mongoServer"/>
        </list>
    </constructor-arg>
</bean>
<bean id="mongoCredential" class="com.mongodb.MongoCredential">
    <constructor-arg name="mechanism" value="#{T(com.mongodb.AuthenticationMechanism).SCRAM_SHA_1}"/>
    <constructor-arg type="java.lang.String" name="userName" value="user"/>
    <constructor-arg type="java.lang.String" name="source" value="myDB"/>
    <constructor-arg type="char[]" name="password" value="xxxxx"/>
</bean>
<bean id="mongoCredentialList" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <ref bean="mongoCredential"/>
        </list>
    </constructor-arg>
</bean>
<!-- MongoClient -->
<bean id="mongoClient" class="com.mongodb.MongoClient">
    <constructor-arg ref="mongoServerList"/>
    <constructor-arg ref="mongoCredentialList"/>
</bean>
<!-- MongoDbFactory -->
<bean id="mongoDbFactory" class="org.springframework.data.mongodb.core.SimpleMongoDbFactory">
    <constructor-arg name="mongo" ref="mongoClient"/>
    <constructor-arg name="databaseName" value="myDb"/>
</bean>
<bean id="mappingContext"
      class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
<bean id="typeInformationMapper" class="com.example.util.typemapper.AnnotationTypeInformationMapper">
    <constructor-arg name="basePackagesToScan">
        <list>

            <value>com.example.entity</value>
        </list>
    </constructor-arg>
</bean>
<bean id="defaultMongoTypeMapper"
      class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
    <constructor-arg name="typeKey" value=
        "_class" />
    <constructor-arg name="mappers" >
        <list>
            <ref bean="typeInformationMapper" />
        </list>
    </constructor-arg>
</bean>
<bean id="mappingMongoConverter"
      class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
    <constructor-arg name="mappingContext" ref="mappingContext"/>
    <property name="typeMapper" ref="defaultMongoTypeMapper"/>
</bean>
<!-- MongoTemplate -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate" primary="true">
    <property name="writeResultChecking" value="EXCEPTION"/>
    <property name="writeConcernResolver" ref="writeConcernResolver"/>
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>
<bean id="mongoTemplateReplicaSet" class="org.springframework.data.mongodb.core.MongoTemplate" primary="false">
    <property name="writeResultChecking" value="EXCEPTION"/>
    <property name="writeConcernResolver" ref="writeConcernResolver"/>
    <property name="readPreference" ref="readPreferenceSecondary"/>
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>

<bean id="writeConcernResolver" class="com.example.MyWriteConcernResolver">

</bean>

<bean id="readPreferenceSecondary" class="com.mongodb.TaggableReadPreference.SecondaryPreferredReadPreference"/>

<mongo:repositories base-package="my.repository.package.*"/>

我正在使用 Spring 4.3.6.RELEASEjava-mongo-driver 3.3.0

【问题讨论】:

  • 你能解决这个问题吗?
  • 你好@Madbreaks,是的,我也必须更改 spring-data-commons 的版本。这些是我使用的版本:spring:4.3.6.RELEASE,spring-data-commons:1.13.0.RELEASE,spring-data-mongodb:1.10.11.RELEASE
  • 谢谢。您应该将其添加为答案并接受它!

标签: java spring mongodb spring-data-mongodb


【解决方案1】:

尝试 Spring-Data-mongo 1.10.12 而不是 1.10.0。并将 mongo-java 驱动更新到 3.4.0

【讨论】:

  • 谢谢@Ash,抱歉我之前没有回答。我设法使这项工作也升级了 spring-data-commons 的版本,不需要更改 mongo-java 驱动程序。
【解决方案2】:

我也设法通过更改 spring-data-commons 的版本来解决这个问题。

这些是我使用的版本:
春天:4.3.6.RELEASE
spring-data-commons:1.13.0.RELEASE
spring-data-mongodb:1.10.11.RELEASE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2013-08-04
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多