我的代码是这样的(请忽略语法)
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 :(得分: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();
}
//
}
}