2013-05-03 32 views
0

我正在开发一个项目并使用第三方库。比方说,我使用一个库给我的对象ExtObj。在我的项目中,我有一个MyObj类,它使用ExtObj。我如何配置spring 3在MyObj中注入ExtObj?春季3:从库中注入依赖项?

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

在此先感谢!

UPDATE 我的猜测是:

<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> 

这样的配置是否正确?

+0

http://www.mkyong.com/spring/spring-dependency-injection-di/ – sanbhat 2013-05-03 11:43:32

回答

3

首先,您需要在应用程序上下文(xml文件或@Configuration类)中为您的​​定义一个bean。例如。如果​​有一个构造采取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> 

或setter注入:

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

如果你使用setter injection,那么MyObj需要有一个setter setExtObj。如果您使用构造函数注入MyObj需要有一个构造函数以​​类的实例。

+0

+1 - 这解释了它。 Spring必须创建外部对象和你的外部对象才能将它们连接在一起。 – duffymo 2013-05-03 12:17:36

1

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

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

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

您每次创建使用JDBC驱动程序的Spring数据源时都会这样做。这是第三方图书馆。

+0

也许我的问题其实是 - 我必须在一些spring xml配置文件中定义外部对象吗? – user1414745 2013-05-03 11:57:16

+0

我不知道这意味着什么,但是如果你想让你的对象注入第三方对象,你必须给Spring控件并告诉它如何为你创建它们。 – duffymo 2013-05-03 12:16:52