java - Spring 3 : inject a dependency from a library?

标签 java xml spring dependency-injection

我正在开发一个项目并使用第三方库。假设我使用一个为我提供对象 ExtObj 的库。在我的项目中,我有一个类 MyObj,它使用 ExtObj。如何配置 spring 3 在 MyObj 中注入(inject) 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,您可以使用构造函数注入(inject):

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

或 setter 注入(inject):

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

如果您使用setter注入(inject),那么MyObj需要有一个setter setExtObj。如果您使用构造函数注入(inject),MyObj 需要有一个构造函数获取 ExtObj 类的实例。

关于java - Spring 3 : inject a dependency from a library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358087/

相关文章:

java - 从脚本填充内存 hsqldb 数据库

java - 正确实现此接口(interface)

java - 如何计算原始数据类型的范围?

javascript - 将远程 XML 加载到网页中并通过 JavaScript 访问其内容

c# - c# vs2015 中的 c++ dll xml 文档注释

java - 黑莓 OAuth 替代方案

android - 使用 Constraints 而不是 maxWidth 属性来限制宽度

mysql - Tomcat7 显示部署我的应用程序时出错,提示 'MISSING TABLE:XXX'

java - 在 Spring 中注入(inject)不同 bean 的多个实例

java - 跨源请求被阻止的 Spring REST 服务 + AJAX