[英]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
实例TheClass
给autowireBean(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.