Невозможно преобразовать значение типа 'java.lang.String' в требуемый тип 'com.mongodb.ReadPreference' - PullRequest
0 голосов
/ 12 февраля 2019

Я боролся с Монго, пытаясь настроить следующий Боб:

 <bean id="someMongoOptions" class="SomeClassThatExtendFromMongoClientOptionsFactoryBean" scope="singleton">
    <!--assume here other properties are injected, but just readPreference is the relevant one failing-->
    <property name="readPreference" value="${some_value_here_for_this:PRIMARY}" />
</bean>

Я также использую CustomerEditorConfigurer таким образом:

<bean id="myTestPropertyEditorRegistrar" class="org.springframework.beans.factory.config.CustomEditorConfigurer" scope="singleton">
    <property name="propertyEditorRegistrars">
        <list>
            <bean class="myClass.MyTestPropertyEditorRegistrar" />
        </list>
    </property>
</bean>



public class MyTestPropertyEditorRegistrar implements PropertyEditorRegistrar {

@Override
public void registerCustomEditors(PropertyEditorRegistry registry) {
    registry.registerCustomEditor(ServerAddress[].class, new ServerAddressPropertyEditor());
    registry.registerCustomEditor(MongoCredential[].class, new MongoCredentialPropertyEditor());
    registry.registerCustomEditor(ReadPreference.class, new ReadPreferencePropertyEditor());
    registry.registerCustomEditor(WriteConcern.class, new WriteConcernPropertyEditor());
}

}

Я использую: mongo-java-driver 3.5.0 spring-data-mongodb 2.0.5.RELEASE

Насколько я понимаю, значение значения должно быть в порядке, и не должно бытьбольшое дело

Это соответствующая ошибка:

Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'com.mongodb.ReadPreference' для свойства 'readPreference';вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа «java.lang.String» в требуемый тип «com.mongodb.ReadPreference» для свойства «readPreference»: не найдено подходящих редакторов или стратегии преобразования

Также эта часть может быть актуальной, поскольку я развертываю на уровне TRACE, чтобы увидеть, что может происходить при создании bean-компонентов:

DEBUG 36213 --- [main] org.springframework.beans.BeanUtils: Редактор свойств [com.mongodb.ReadPreferenceEditor] не найден для типа com.mongodb.ReadPreference в соответствии с соглашением суффикса 'Editor' TRACE 36213 --- [main] osbeans.TypeConverterDelegate
: Конструктор String не найден в типе [com.mongodb.ReadPreference]

java.lang.NoSuchMethodException: com.mongodb.ReadPreference. (java.lang.String) в java.lang.Class.getConstructor0 (Class.java:3082) ~ [na:1.8.0_192] в java.lang.Class.getConstructor (Class.java:1825) ~ [na: 1.8.0_192] в org.springframework.beans.TypeConverterDelegate.convertIfNecessary (TypeConverterDelegate.java:234) ~ [spring-beans-5.0.4.RELEASE.jar: 5.0.4.RELEASE] в org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNeeded (AbstractNestablePropertyAccessor.java --55)5.0.4.RELEASE.jar: 5.0.4.RELEASE] at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty (AbstractNestablePropertyAccessor.java:604) [spring-beans-5.0.4.RELEASE.jar: 5.0.4.RELEASE]в org.springframework.beans.BeanWrapperImpl.convertForProperty (BeanWrapperImpl.java:219) [spring-beans-5.0.4.RELEASE.jar: 5.0.4.RELEASE]

...