Spring - 使用另一个类的工厂方法创建一个类的实例

时间:2016-07-18 18:21:49

标签: spring

我在Spring项目中使用Apache Ignite。我想使用xml配置在我的应用程序上下文中创建org.apache.ignite.Ignite的实例。创建Ignite对象的方法之一是使用org.apache.ignite.Ignition #start方法。我的问题是,如何使用bean xml配置从Ignition#start创建一个Ignite实例。

<!-- Implements Ignite interface -->
<bean class="org.apache.ignite.internal.IgniteKernal">

</bean>

<!-- Returns instance of Ignite as org.apache.ignite.internal.IgniteKernal -->
<bean id="ignitionIgniteKernal" class="org.apache.ignite.Ignition" factory-method="start">
    <constructor-arg ref="refToConfig" />
</bean>

2 个答案:

答案 0 :(得分:1)

尝试使用Spring缓存管理器。

http://apacheignite.gridgain.org/docs/spring-caching

根据文件

  

嵌入式节点可以由SpringCacheManager本身启动。在这种情况下,您需要分别通过configurationPath或配置属性提供Ignite配置XML文件或IgniteConfiguration bean的路径(请参阅下面的示例)。请注意,设置两者都是非法的,并导致IllegalArgumentException。

因此,应用程序上下文会调出缓存,然后Spring缓存管理器通过注释或显式添加来管理缓存。

希望这有帮助。

答案 1 :(得分:0)

根据spring文档,上面的“ignitionIgniteKernal”bean定义正是你如何创建org.apache.ignite.internal.IgniteKernal的实例。价:

  

如果存在“class”属性,则工厂方法将为a   对此类的“class”属性指定的类的静态方法   bean的定义。通常这将是同一类   构造对象 - 例如,当使用工厂方法时   构造函数的替代。但是,它可能会有所不同   类。在这种情况下,创建的对象属于该类   在“class”属性中指定。这类似于FactoryBean   行为。