如何从枚举单例的工厂方法创建一个spring bean

时间:2013-06-04 13:30:17

标签: java spring

我正试图在这里弹出示例代码

http://xeiam.com/xchange_examplecode.jsp

  public static void main(String[] args) {

    // Demonstrate the public market data service
    // Use the factory to get the version 2 MtGox exchange API using default settings
    Exchange mtGoxExchange = ExchangeFactory.INSTANCE.createExchange(MtGoxExchange.class.getName());

    // Interested in the public market data feed (no authentication)
    PollingMarketDataService marketDataService = mtGoxExchange.getPollingMarketDataService();

基本上我想将PollingMarketDataService或Exchange注入弹簧bean。

然而,上面的ExchangeFactory是一个枚举,当我尝试这个时:

<beans:bean id="exchangeFactory" class="com.xeiam.xchange.ExchangeFactory" factory-method="valueOf">
    <beans:constructor-arg value="INSTANCE"/>
</beans:bean>

<beans:bean id="mtGoxExchange" factory-bean="exchangeFactory" factory-method="createExchange">
    <beans:constructor-arg value="com.xeiam.xchange.mtgox.v2.MtGoxExchange"/>
</beans:bean>

ExchangeFactory为空。

1 个答案:

答案 0 :(得分:4)

这应该有效:

<util:constant id="exchangeFactory" static-field="com.xeiam.xchange.ExchangeFactory.INSTANCE" />

<bean id="mtGoxExchange" factory-bean="exchangeFactory" factory-method="createExchange">
    <constructor-arg value="com.xeiam.xchange.mtgox.v2.MtGoxExchange" />
</bean>

试一试。