是否可以在动态类上自动跟踪字段?
使用工厂很棒,但它不允许我使用@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会处理自动连接的字段吗?
答案 0 :(得分:1)
对于Spring来自动装配字段,它需要负责创建对象。由于您在某些Factory类中创建对象,因此Spring无法注入字段。例如,如果你做了
Object o = new ObjectWithAutowiredFields();
Spring如何知道自动装配该对象的字段,它甚至没有扫描过该类。
但是,如果你的工厂是一个Spring bean,你可以在其中包含@Autowired
个字段,并使用那些你要实例化的类的构造函数(假设该类有这样的构造函数)或者使用setter。