23

我正在使用一个外部库,它要求我使用 XML Bean 定义对其进行配置;在 Bean 定义中,我需要从我的项目中提供一个带有 Bean 的外部类。我正在使用带有组件扫描的弹簧注释。

如何在 XML Bean 定义中引用我的注释 Bean?

除了创建 XML Bean 定义之外,还有其他方法吗?

详细信息:春季 3.0.7

4

3 回答 3

36

无论它是如何创建的(基于 XML 或注释元数据),每个 bean 最终都会以唯一的名称进入应用程序上下文。

如果您刚刚使用@Component或派生类注释了您的类,而没有说明任何名称,则将应用默认命名方案,并且 bean 名称将是您的类名称,第一个字符小写:ClassName => "className"

考虑到这一点,如果您需要在 XML bean 定义中注入该 bean,您可以像使用上下文中的任何其他 bean 一样执行此操作:

<bean id="someBean" class="SomeClass">
    <property name="someProp" ref="className"/><!-- to stick to the above example -->
</bean>

由于您将注释与 XML 混合,因此应用程序上下文将能够正确定位“className”bean。

于 2013-07-05T22:01:14.100 回答
8

@Service 注释接受一个可选的 String 值,该值可用于为 bean 提供您选择的名称。例如,如果您的自定义 bean 看起来像:

@Service("mySpecialName")
public class MyClass { ... }

那么你的xml可能有:

<bean class="com.someone.else.library.SomeClass">
  <property name="someProp" ref="mySpecialName"/>
</bean>
于 2014-09-11T23:44:53.387 回答
0

确保在您的 xml 文件中添加以下代码

<context:component-scan base-package="" />
<context:annotation-config />
于 2015-01-13T13:39:13.417 回答