繁体   English   中英

如何在不是配置bean的类中自动装配bean?

[英]How to autowire a bean inside a class that is not a configured bean?

如果我的术语不正确,请原谅我。

我的情况是这样的:

我有一个班级,我们称之为TheClass。 这个类里面是一个TheData对象。

我有XML来设置TheData bean,如下所示:

<bean id="theData" class="com.abc.TheData">
        <property name="field" value="value1" />

    </bean>

和TheClass中的setter一样:

public void setTheData(TheData theData)
{
     this.theData = theData;
}

我的问题是,如果我不在XML中创建TheClass bean(因此不能让它自动装配),它将不知道自动装配theData字段(对吗?)。 由于某些限制,我无法在XML中配置TheClass(因此后来将其自动装配)。 所以,我的问题是,我怎样才能做到这一点? 我有点像新手,如果我错过了什么,请随意指出。

如果您可以获取Spring上下文,则将其TheClass转换为AutowireCapableBeanFactory ,并将您的TheClass实例TheClassautowireBean(Object)方法。 然后,Spring将尝试将其自动装配规则应用于该对象。

但是,您需要将@Autowired添加到setTheData方法中。

你可以使用@Resource或@Component。

我刚刚看到这个问题,并认为我可能会添加另一种方法来做你想做的事情(虽然AutowireCapableBeanFactory将是我的选择)。 您可以按照博客文章中描述的方式利用@Configurable批注

您应该能够在您的setter设置的实例变量上使用@Autowired注释,而无需在XML中声明TheClass bean。 那是:

public class TheClass {
  @Autowired
  private TheData theData;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM