【发布时间】: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.RELEASE 和 java-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