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

时间:2011-01-10 19:53:57

标签: java spring autowired

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

我的情况是:

我有一个班级,我们称之为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(因此后来将其自动装配)。所以,我的问题是,我怎样才能做到这一点?我有点像新手,如果我错过了什么,请随意指出。

4 个答案:

答案 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;
}