4

如果我没有正确理解术语,请原谅我。

我的情况是这样的:

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

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

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

    </bean>

和 TheClass 里面的一个二传手,像这样:

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

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

4

4 回答 4

4

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

不过,您需要添加@Autowired到该setTheData方法中。

于 2011-01-10T19:59:55.303 回答
0

您可以使用@Resource 或@Component。

于 2013-04-11T21:12:26.663 回答
0

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

于 2014-03-31T09:35:56.710 回答
-1

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

public class TheClass {
  @Autowired
  private TheData theData;
}
于 2011-01-10T21:12:48.700 回答