Spring FactoryBean没有任何Spring导入

时间:2013-02-26 11:49:27

标签: java spring

是否可以创建一个POJO bean,它可以被Spring视为FactoryBean。所以我想创建一个FactoryBean(包含getObjectgetTypeisSingleton等类的类,但不会导入任何特定于Spring的类。因此,它不会实现FactoryBean

仅供参考,使用factory-method无效,因为我需要在创建对象之前设置属性。

这方面的一个典型示例是使用构建器来创建构建器,设置属性并调用构建方法以获取所需的最终bean。

2 个答案:

答案 0 :(得分:2)

factory-bean 怎么样?例如:

<bean id="factory" class="package.Factory">
    <!-- configure properties here -->
</bean>
<bean id="instance" factory-bean="instans" factory-method="createInstance"/>

Spring将创建Factory类的实例,配置它并使用它的 createInstance 方法来创建id为 instans 的bean。

答案 1 :(得分:1)

如果构建器的属性具有适当的Java Bean兼容set方法,那么您可以分两个阶段完成

<bean id="fooBuilder" class="com.example.FooBuilder">
  <property name="algorithm" value="simple" />
</bean>

<bean id="foo" factory-bean="fooBuilder" factory-method="build" />

但是对于像Guava CacheBuilder那样使用流畅的setter的东西,你可能最好使用Spring的JavaConfig approach来配置那部分配置而不是XML

@Configuration
public class AppConfig {
  public @Bean Cache<String, MyObject> cache() {
    return CacheBuilder.newBuilder()
      .maximumSize(1000)
      .softValues()
      .build(cacheLoader);
  }

  // defined elsewhere, maybe in XML
  private @Autowired CacheLoader<String, MyObject> cacheLoader;
}