0

我正在开发一个项目并使用 3rd 方库。假设我使用了一个库,它给了我对象 ExtObj。在我的项目中,我有一个 MyObj 类,它使用 ExtObj。如何配置 spring 3 以在 MyObj 中注入 ExtObj?

我试图在互联网上研究这个话题,但我没有找到一个直接的答案。我想使用 xml 配置,也许是 (?) @Autowired,不是@EJB@Inject

提前致谢!

更新我的猜测是:

<bean id="myObj" value="me.MyObj">
  <property name="extObj" value=" ... ??? ...">
</bean>

所以,我不知道我应该投入什么价值。我想这就是对外部对象的引用。但是spring只能引用已经在spring中定义/配置的对象。所以:

<bean id="extObj" value="ext.lib.ExtObj">
<bean id="myObj" value="me.MyObj">
  <property name="extObj" value="extObj">
</bean>

那个配置对吗?

4

2 回答 2

3

首先,您需要ExtObj在应用程序上下文中为您定义一个 bean(一个 xml 文件或一个 @Configuration 类)。例如。如果ExtObj有一个构造函数,String你可以这样定义bean:

<bean id="extObj" class="ext.lib.ExtObj">
    <constructor-arg value="SomeString"/>
</bean>

要定义MyObj您可以使用构造函数注入:

<bean id="myObj" class="me.MyObj">
    <constructor-arg ref="extObj"/>
</bean>

或二传手注入:

<bean name="myObj" class="me.MyObj">
    <property name="extObj" ref="extObj"/>
</beans>

如果您使用 setter 注入,则MyObj需要有一个 setter setExtObj。如果您使用构造函数注入MyObj,则需要有一个构造函数采用ExtObj该类的实例。

于 2013-05-03T12:12:21.010 回答
1

当然,你可以注入一个第三方库,只要它有 Spring 可以访问的构造函数。

您可以使用 XML 或注释 - 您的选择。

您需要让 Spring 实例化库类的实例,然后将其注入到需要它们的对象中。

每次创建使用 JDBC 驱动程序的 Spring 数据源时都需要这样做。那是一个 3rd 方库。

于 2013-05-03T11:42:51.293 回答