无法将“java.lang.String”类型的属性值转换为属性“replicaSetSeeds”所需的类型“com.mongodb.ServerAddress[]”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19429137/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Failed to convert property value of type 'java.lang.String' to required type 'com.mongodb.ServerAddress[]' for property 'replicaSetSeeds'
提问by user2872219
Is this bug in Mongo driver or am i doing anything incorrect?
这是 Mongo 驱动程序中的错误还是我做错了什么?
Getting below exception:
获得以下异常:
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'com.mongodb.ServerAddress[]' for property 'replicaSetSeeds'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.mongodb.ServerAddress] for property 'replicaSetSeeds[0]': no matching editors or conversion strategy found
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:465)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:496)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:490)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1437)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1396)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1132)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
... 14 more
Caused by: java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.mongodb.ServerAddress] for property 'replicaSetSeeds[0]': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:264)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:128)
at org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:487)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:195)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:450)
... 20 more
Below is my spring configuration
下面是我的弹簧配置
<bean id="defaultMongoTypeMapper" class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey"><null/></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>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
<property name="writeConcern">
<util:constant static-field="com.mongodb.WriteConcern.SAFE" ></util:constant>
</property>
</bean>
jars/Drivers used:
spring-beans-3.2.0.RELEASE.jar
mongo-java-driver-2.11.3.jar
使用的罐子/驱动程序:
spring-beans-3.2.0.RELEASE.jar mongo-java-driver-2.11.3.jar
Fixed it using below code:
使用以下代码修复它:
<bean id="mongoClient" class="com.mongodb.MongoClient">
<constructor-arg>
<list>
<value>161.141.16.100:27017</value>
<value>161.141.16.101:27017</value>
</list>
</constructor-arg>
</bean>
<mongo:db-factory id="mongoDbFactory" dbname="test" mongo-ref="mongoClient"/>
回答by jwineman
You're probably using
你可能正在使用
<property name="[variable]" ref="[bean]"/>
instead of
代替
<property name="[variable]" value="[bean]"/>
ref references a spring bean, value translates to string.
ref 引用一个 spring bean,值转换为字符串。
回答by Yogesh Patil
by value,we mean that what we want inject is primitives or String,while with ref,what we want to inject is self-defined objects.
通过值,我们的意思是我们要注入的是原语或字符串,而对于 ref,我们要注入的是自定义对象。
if your are using primitives or String it is better to use
如果您使用原语或字符串,最好使用
<property name="Variable value" ref="BeanName" />
other-case use
其他情况使用
<property name="Variable value" value="BeanName" />