![](/img/trans.png)
[英]“No mapper registered for java.util.Optional” using JDBI v2 and java.util.Optional
[英]How to configure Java 8 java.util.Optional using Spring 4 xml
我正在嘗試使用Spring XML配置使用工廠方法Optional.of
的java.land.Optional對象。 但是我一直收到錯誤消息。 我正在使用Spring 4和Java 8。
<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>
當我嘗試運行測試時,在spring嘗試創建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轉換為對象Optional,但是有問題的方法是這樣的:
public static <T> Optional<T> of(T var0);
我想要一個包含一個Long值的Optional對象。
有沒有人遇到過這個問題,請提供一些見解? 謝謝!
您在配置“ eventMapping” bean時遇到問題。 您已在此處指定對“ team1Id”的引用,而不是“ Team1Id”。 您配置中的“ team1Id”類型為Long,因此它應該失敗。 僅“ Team1Id”具有可選類型。 因此,您應該使用對此bean的引用。
通常,我建議避免使用幾乎相同的bean來防止此類沖突。
所以最后,如果有人遇到同樣的問題,這就是我使之工作的方式。 通過Spring表達語言。
<constructor-arg name="eventMapping" value="#{ T(java.util.Optional).of( 1)}"/>
使用factory-method =“ of”策略無法使其正常工作。
如上所述,使用Java配置更容易做到這一點,但是在這種情況下,我不得不使用xml config。
希望有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.