如果我的术语不正确,请原谅我。
我的情况是:
我有一个班级,我们称之为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(因此后来将其自动装配)。所以,我的问题是,我怎样才能做到这一点?我有点像新手,如果我错过了什么,请随意指出。
答案 0 :(得分:4)
如果您可以掌握Spring上下文,请将其转换为AutowireCapableBeanFactory
,并将TheClass
的实例传递给autowireBean(Object)
方法。然后,Spring将尝试将其自动装配规则应用于该对象。
但是,您需要将@Autowired
添加到setTheData
方法中。
答案 1 :(得分:0)
您可以使用@Resource或@Component。
答案 2 :(得分:0)
我刚刚看到这个问题,并认为我可能会添加另一种方法来做你想做的事情(虽然AutowireCapableBeanFactory将是我的选择)。 您可以按this博客文章
中描述的方式利用@Configurable批注答案 3 :(得分:-1)
您应该能够在您的setter设置的实例变量上使用@Autowired注释,而无需在XML中声明TheClass bean。那就是:
public class TheClass {
@Autowired
private TheData theData;
}