2016-06-09 70 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(); 
     } 

     // 
    } 
}