3

是否可以在动态类上自动装配字段?

使用工厂很棒,但它不允许我去@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 处理自动装配字段的方式?

4

1 回答 1

1

为了让 Spring 自动装配字段,它需要负责创建对象。由于您在某个 Factory 类中创建对象,因此 Spring 无法注入字段。例如,如果你做了

Object o = new ObjectWithAutowiredFields();

Spring 怎么会知道自动装配该对象的字段,它甚至没有扫描类。

但是,如果您的工厂是 Spring bean,您可以@Autowired在其中包含字段并将这些字段与您正在实例化的类的构造函数(假设该类具有这样的构造函数)或设置器一起使用。

于 2013-04-09T19:46:12.023 回答