2013-04-09 35 views
2

是否有可能自動裝配上動態類領域?如何自動裝配動態類

使用工廠很棒,但它不允許我使用@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將處理自動裝配字段?

回答

1

對於Spring自動填充字段,它需要負責創建對象。由於您在某些Factory類中創建對象,因此Spring無法注入字段。例如,如果你確實想知道如何自動調用該對象的字段,它甚至沒有掃描過該類。但是,如果你的工廠是一個Spring bean,你可以在其中有@Autowired字段,並將它們與你正在實例化的類的構造函數(假定該類有這樣的構造函數)或setter一起使用。

+0

我所熟悉的,爲什麼'@ Autowire'不會在目前的環境下工作。我只是不知道是否有在Spring的方式從類名加載類,如'com.project.package.class' – Webnet 2013-04-09 19:55:08

+0

看看這個答案:http://stackoverflow.com/questions/11606504 /註冊-beansprototype,在運行時,在彈簧 – 2013-04-09 19:59:50

+0

有趣......即使'@ Configurable',它不會改變我手動加載類的事實。我該怎麼做? – Webnet 2013-04-09 20:03:11