2012-08-23 78 views
1

如何通過彈簧條件初始化一個類? 如果某些condtion是真的,那麼我想一個參數被別人通過一些其他 說法如何通過彈簧條件初始化一個類

<bean id="myFactory" class="Factory"> 

    if something then 
    <constructor-arg> 
     <util:map> 
     <!-- configure your map here, or reference it as a separate bean --> 
     <entry key="java.lang.String" value="key">....</entry> 
     </util:map> 
    </constructor-arg> 
    else 
    <constructor-arg> 
     <util:map> 
     <!-- configure your map here, or reference it as a separate bean --> 
     <entry key="java.lang.String" value="key">....</entry> 
     </util:map> 
    </constructor-arg> 
</bean> 

如何?

回答

1

春季表達語言可能會爲你做的伎倆。 link

+2

你應該提供一個例子,如果你覺得你有答案。 – Chaos

0

您可以完全按照您指定的方式進行操作。以這種方式定義FactoryBean,比如說。爲了生成客戶豆:

public class CustomFactoryBean implements FactoryBean<Customer>{ 

    private int customProperty; 

    public int getCustomProperty() { 
     return customProperty; 
    } 

    public void setCustomProperty(int customProperty) { 
     this.customProperty = customProperty; 
    } 

    @Override 
    public Customer getObject() throws Exception { 
     if (customProperty==1) 
      return new Customer("1", "One");   
     return new Customer("999", "Generic"); 
    } 

    @Override 
    public Class<?> getObjectType() { 
     return Customer.class; 
    } 

    @Override 
    public boolean isSingleton() { 
     return true; 
    } 
} 

這基本上是這樣,現在基於你在工廠bean的個屬性如何注入,實際的bean實例可以在getObject方法來控制上述