Я пытаюсь настроить с помощью конфигурации Spring XML объект java.land.Optional с использованием заводского метода Optional.of
. Однако я все время получаю сообщение об ошибке. Я использую Spring 4 и Java 8.Как настроить Java 8 java.util.Optional с использованием Spring 4 xml
<bean id="eventMapping" class="com.betfair.service.sogei.sem.dto.EventMapping">
<constructor-arg name="sogTeam1Id" ref="sogTeam1Id"/>
</bean>
<bean id="sogTeam1Id" class="java.util.Optional" factory-method="of">
<constructor-arg type="java.lang.Object" ref="team1Id"/>
</bean>
<bean id="team1Id" class="java.lang.Long">
<constructor-arg value="1000"/>
</bean>
Когда я пытаюсь запустить тест, я получаю исключение при пружинном пытается создать бобы:
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'eventMapping' defined in class path resource [test-data-provider.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.Optional]: Could not convert constructor argument value of type [java.lang.Long] to required type [java.util.Optional]: Failed to convert value of type [java.lang.Long] to required type [java.util.Optional]; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.Long] to required type [java.util.Optional]: no matching editors or conversion strategy found
Я также пробовал:
<bean id="sogTeam1Id" class="java.util.Optional" factory-method="of">
<constructor-arg type="java.lang.Object" value="1000"/>
</bean>
в этом случае я получаю следующее сообщение (подобное) сообщение об ошибке:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'updateEventDatePayload' defined in class path resource [test-data-provider.xml]: Cannot resolve reference to bean 'eventMapping' while setting constructor argument; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'eventMapping' defined in class path resource [test-data-provider.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.Optional]: Could not convert constructor argument value of type [java.lang.String] to required type [java.util.Optional]: Failed to convert value of type [java.lang.String] to required type [java.util.Optional]; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.Optional]: no matching editors or conversion strategy found
Ошибки объяснить нет никакого способа, чтобы преобразовать объект Long на объект необязателен, но рассматриваемый метод заключается в следующем:
public static <T> Optional<T> of(T var0);
Я хочу, чтобы иметь дополнительный объект, содержащий значение, которое является Long ,
Кто-нибудь сталкивался с этим раньше, пожалуйста, предложите некоторое понимание? Спасибо!
Я давно перешел на JavaConfig, но я подозреваю, что проблема заключается в использовании 'constructor-arg' с чем-то, что не является конструктором. – chrylis