2016-06-09 71 views
0

豆型我的代碼是這樣的(請忽略語法)如何動態地解決在春季

 Interface Fruit{ 
     color{}; 
    } 

    class Mango extends Fruit{ 
Mango(String color){ 
sop(color)} 
} 

class Apple extends Fruit{ 
Apple(String color){ 
sop(color)} 
} 


    Class SomeClass{ 

    method(Fruit f){ 
    f.color() 
    } 

    } 


    Class Caller { 

    @Autowired 
    public Fruit fruit; 

    @Autowired 
    public SomeClass someClass; 

     someClass.method(fruit); 

    } 

我有兩個水果(蘋果和芒果),我想以這樣的方式來寫配置,我可以動態地通過不同的水果。

<bean id=mango class = Fruit> 
    <constructor-arg value="yellow"/> 

    <bean id=apple class = Fruit> 
    <constructor-arg value="red"/> 

而且這種特殊的水果色調法被稱爲。 請讓我知道我應該怎麼寫剩餘配置

回答

0

您好我不知道這是否準確回答你的問題,但我用來做這樣的:

<bean class="yourpathtoyourclassCaller"> 
    <property name="fruit"> 
     <bean id=apple class = Fruit> 
     <constructor-arg value="red"/> 
     </bean 
    </property> 
</bean> 
0

可以肯定這樣做:

使用工廠bean/factory方法。 。等等,看看這裏http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html

<bean id="apple" class="FruitFactory" 
    factory-method="fruitFactory"> 
    <constructor-arg value="red" /> 
</bean> 

<bean id="mongo" class="FruitFactory" 
    factory-method="fruitFactory"> 
    <constructor-arg value="yellow" /> 
</bean> 

public class FruitFactory { 

    public static Fruit fruitFactory(String color) 
    { 
     if ("red".equals(color)) 
     { 
      return new Apple(); 
     } 
     else if ("yellow".equals(color)) 
     { 
      return new Mongo(); 
     } 

     // 
    } 
}