创建 Java Bean 继承结构时出现问题
Problems creating a Java Bean inheritance structure
我正在尝试使用 Java Beans 创建我认为是简单的继承结构(我以前从未使用过它们)。我得到的代码的基数 class 定义为
public class CreateDialogFactory {
priavte static beanId;
protected CreateDialogFactory() { }
protected CreateDialogFactory(String beanId) { this.beanId = beanId; }
public static CreateScenarioDialog getInstace() {
return SpringHelper.getInstance(beanId, CreateScenarioDialogFactory.class);
}
}
从这个 class 继承的是两个 class 定义的:
@Component(ACreateScenarioDialogFactory.BEAN_ID)
public class ACreateScenarioDialogFactory extends CreateDialogFactory {
private static String BEAN_ID = "create-a-scenario";
protected ACreateScenarioDialogFactory() {
super(BEAN_ID);
}
}
和
@Component(BCreateScenarioDialogFactory.BEAN_ID)
public class BCreateScenarioDialogFactory extends CreateDialogFactory {
private static String BEAN_ID = "create-b-scenario";
protected BCreateScenarioDialogFactory() {
super(BEAN_ID);
}
}
我的 xml 规范非常简单 -
我的问题是,当我编译时我得到 No unique bean of type [a.b.CreateDialogFactory] is defined: expected single matching bean but found 2: [create-a-scenario, create-b-scenario]
即使我注释掉 xml 规范中的 bean 定义。
Spring 中的控制反转旨在与接口一起使用。在您的代码中,层次结构的基础 class 在生成 bean 时被视为类型,因此 SpringHelper.getInstance(beanId, CreateScenarioDialogFactory.class)
无法在 ACreateScenarioDialogFactory
或 BCreateScenarioDialogFactory
之间进行选择,因为它们是相同的类型。
我正在尝试使用 Java Beans 创建我认为是简单的继承结构(我以前从未使用过它们)。我得到的代码的基数 class 定义为
public class CreateDialogFactory {
priavte static beanId;
protected CreateDialogFactory() { }
protected CreateDialogFactory(String beanId) { this.beanId = beanId; }
public static CreateScenarioDialog getInstace() {
return SpringHelper.getInstance(beanId, CreateScenarioDialogFactory.class);
}
}
从这个 class 继承的是两个 class 定义的:
@Component(ACreateScenarioDialogFactory.BEAN_ID)
public class ACreateScenarioDialogFactory extends CreateDialogFactory {
private static String BEAN_ID = "create-a-scenario";
protected ACreateScenarioDialogFactory() {
super(BEAN_ID);
}
}
和
@Component(BCreateScenarioDialogFactory.BEAN_ID)
public class BCreateScenarioDialogFactory extends CreateDialogFactory {
private static String BEAN_ID = "create-b-scenario";
protected BCreateScenarioDialogFactory() {
super(BEAN_ID);
}
}
我的 xml 规范非常简单 -
我的问题是,当我编译时我得到 No unique bean of type [a.b.CreateDialogFactory] is defined: expected single matching bean but found 2: [create-a-scenario, create-b-scenario]
即使我注释掉 xml 规范中的 bean 定义。
Spring 中的控制反转旨在与接口一起使用。在您的代码中,层次结构的基础 class 在生成 bean 时被视为类型,因此 SpringHelper.getInstance(beanId, CreateScenarioDialogFactory.class)
无法在 ACreateScenarioDialogFactory
或 BCreateScenarioDialogFactory
之间进行选择,因为它们是相同的类型。