我正在开发一个项目,并使用第三方库。假设我使用的库为我提供了对象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>
该配置正确吗?
最佳答案
首先,您需要在应用程序上下文(XML文件或@Configuration类)中为ExtObj
定义一个bean。例如。如果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
类实例的构造函数。