首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在类中注入Spring-bean

无法在类中注入Spring-bean
EN

Stack Overflow用户
提问于 2012-09-28 23:00:32
回答 2查看 269关注 0票数 1

我有以下类:

代码语言:javascript
复制
@Component("persistenceJPAConfig")
public class JPAPersistenceConfig {...}

使用Spring,我可以“注入”这个类,方法是在我想使用JPAPersistenceConfig - Class的目标类中添加一个带有@Autowired annotation的方法。我工作得很好,这个类本身也很好。

问题是我必须在运行时创建一个类(编写源代码并编译它),它也必须使用bean。

我也添加了autowired method,但它仍然是空的。

代码语言:javascript
复制
@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中注册?

拼命想要你的:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 23:32:28

您可以在运行时对bean进行regiter:

代码语言:javascript
复制
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getBeanFactory();
beanFactory.registerBeanDefinition("myClass", BeanDefinitionBuilder.rootBeanDefinition(MyClass.class.getName()).getBeanDefinition());

如果你的类有自动连接的属性,它们也会被注入。

票数 0
EN

Stack Overflow用户

发布于 2012-09-28 23:37:22

除了@vacuum所说的,您还可以使用@Component注释生成的类,并在运行时使用ClassPathScanningCandidateComponentProvider扫描它,以生成包含其依赖项的bean,请注意here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12642515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档