2013-02-26 56 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