我有以下类:
@Component("persistenceJPAConfig")
public class JPAPersistenceConfig {...}使用Spring,我可以“注入”这个类,方法是在我想使用JPAPersistenceConfig - Class的目标类中添加一个带有@Autowired annotation的方法。我工作得很好,这个类本身也很好。
问题是我必须在运行时创建一个类(编写源代码并编译它),它也必须使用bean。
我也添加了autowired method,但它仍然是空的。
@org.springframework.stereotype.Component("Customers")
public class Customers {
public Customers() {
}
private org.product.server.database.JPAPersistenceConfig persistenceJPAConfig;
@org.springframework.beans.factory.annotation.Autowired
public void setPersistenceJPAConfig(org.product.server.database.JPAPersistenceConfig persistenceJPAConfig) {
this.persistenceJPAConfig = persistenceJPAConfig;
}
public void someMethod() {
this.persistenceJPAConfig.getClassByName(...)
// Throws nullpointer
}
}我是否也必须用@Component标记生成的文件,这样它才能成为Spring中的“托管bean”?它在运行时如何在Spring中注册?
拼命想要你的:-)
发布于 2012-09-28 23:32:28
您可以在运行时对bean进行regiter:
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory();
beanFactory.registerBeanDefinition("myClass", BeanDefinitionBuilder.rootBeanDefinition(MyClass.class.getName()).getBeanDefinition());如果你的类有自动连接的属性,它们也会被注入。
发布于 2012-09-28 23:37:22
除了@vacuum所说的,您还可以使用@Component注释生成的类,并在运行时使用ClassPathScanningCandidateComponentProvider扫描它,以生成包含其依赖项的bean,请注意here
https://stackoverflow.com/questions/12642515
复制相似问题