0

我正在尝试做这样的事情:

<bean id="myBean" class="com.example.SomeThing">
    <property name="longValue">
        <bean class="java.lang.Long">
            <constructor-arg value="0x0418a14372d4186eL" type="long"/>
        </bean>
    </property>
</bean>

但这会导致以下异常:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'java.lang.Long#19190b75' defined in file [/apollo/env/path/to/config.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.lang.String]: Ambiguous constructor argument types - did you specify the correct bean references as constructor arguments?
4

3 回答 3

1

我想你想要的factory-method参数<bean>

<bean id="myBean" class="com.example.SomeThing">
    <property name="longValue">
        <bean class="java.lang.Long" factory-method="decode">
            <constructor-arg value="0x0418a14372d4186" />
        </bean>
    </property>
</bean>

(注意缺少“L”后缀。)

于 2013-02-15T19:59:17.273 回答
1

你会用Java@Configuration吗?

@Configuration
public class Config {

    @Bean
    public SomeThing someThing() {
        final SomeThing bean = new SomeThing();
        bean.set(Long.parseLong("0418a14372d4186e", 16));
        return bean;
    }

}
于 2013-02-15T20:08:06.087 回答
0

SPeL应该可以工作

<bean id="myBean" class="com.example.SomeThing">
    <property name="longValue" value="#{0x0418a14372d4186eL}" />
</bean>
于 2013-02-15T19:55:23.580 回答