如何在spring中动态解析bean类型

时间:2016-06-09 08:31:06

标签: java spring

我的代码是这样的(请忽略语法)

     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"/>

那种特殊的水果颜色方法叫做。 请让我知道如何编写剩余配置。

2 个答案:

答案 0 :(得分:0)

您好我不知道它是否完全回答了您的问题,但我过去常常这样做:

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

答案 1 :(得分:0)

您可以肯定这样做:

使用工厂bean /工厂方法..等,请在此处查看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();
        }

        //
    }
}