簡體   English   中英

如何自動連接動態課程

[英]How to Autowire a dynamic class

是否可以對動態類的字段進行自動裝配?

使用工廠很棒,但是不允許我使用@Autowire字段。

public static Workflow factory(WorkflowEntity workflowEntity) {
    try {
        Class<?> clazz = Class.forName(workflowEntity.getClassName())
                .asSubclass(Workflow.class);
        Object workflowClass = clazz.getConstructor(WorkflowEntity.class).newInstance(workflowEntity);
        return (Workflow) workflowClass;
    } catch (Exception e) {
        e.printStackTrace();
        logger.severe("Unable to instantiate "+workflowEntity.getClassName()+" class: " + e.getLocalizedMessage());
    }

    return null;
}

可以這樣做,但是以某種方式Spring會處理自動裝配的字段?

為了使Spring自動連接字段,需要負責創建對象。 由於您是在某些Factory類中創建對象的,因此Spring無法注入字段。 例如,如果您做了

Object o = new ObjectWithAutowiredFields();

Spring怎么會知道如何自動連接對象的字段,它甚至沒有掃描類。

但是,如果您的工廠是Spring bean,則可以在其中包含@Autowired字段,並將其與要實例化的類的構造函數一起使用(假定該類具有此類構造函數)或setter。

暫無
暫無

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

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