簡體   English   中英

創建Java Bean繼承結構時遇到問題

[英]Problems creating a Java Bean inheritance structure

我試圖用Java Beans創建我認為是簡單繼承結構的東西(我以前從未使用過它們)。 給我的代碼具有定義為的基類

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);

    }
}

從該類繼承的是兩個定義的類:

@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 [abCreateDialogFactory] is defined: expected single matching bean but found 2: [create-a-scenario, create-b-scenario]

即使當我注釋掉xml規范中的bean定義時。

Spring中的控制反轉旨在與接口一起使用。 在您的代碼中,層次結構的基類在生成bean時被視為類型,因此SpringHelper.getInstance(beanId, CreateScenarioDialogFactory.class)不能在ACreateScenarioDialogFactoryBCreateScenarioDialogFactory選擇,因為它們是同一類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM