2013-02-26 57 views
1

是否可以创建一个POJO bean,它可以被Spring处理为FactoryBean。所以我想创建一个类FactoryBean(具有getObjectgetType,isSingleton等),但不导入任何Spring特定的类。因此它不会执行FactoryBean没有任何Spring进口的Spring FactoryBean

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

一个经典的例子就是使用一个构建器,你可以在其中创建构建器,设置属性并调用构建方法来获取所需的最终bean。

回答

1

如果构造器有适当的Java组件兼容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流利的制定者,你可能会更好过使用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; 
} 
2

工厂豆?例如:

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

Spring将创建工厂类的实例,配置它和使用它的的createInstance方法来创建一个ID instans豆。

+0

哦是的。咄!谢谢。 – 2013-02-26 12:20:16