在XMLBean定义中引用带注释的Spring组件

在XMLBean定义中引用带注释的Spring组件,spring,spring-3,spring-annotations,Spring,Spring 3,Spring Annotations,我使用的外部库要求我使用XMLBean定义对其进行配置;在Bean定义中,我需要使用我的项目中的Bean提供一个外部类。我在组件扫描中使用spring注释 如何在XML Bean定义中引用带注释的Bean 除了创建XMLBean定义,还有其他方法吗 详细信息:Spring 3.0.7无论它是如何创建的(基于XML或注释元数据),每个bean最终都以一个唯一的名称出现在应用程序上下文中 如果您刚刚用@Component或派生词注释了类,而没有说明任何名称,那么将应用默认命名方案,bean名称将是您

我使用的外部库要求我使用XMLBean定义对其进行配置;在Bean定义中,我需要使用我的项目中的Bean提供一个外部类。我在组件扫描中使用spring注释

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

除了创建XMLBean定义,还有其他方法吗


详细信息:Spring 3.0.7

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

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

考虑到这一点,如果需要将该bean注入XML bean定义中,可以像处理上下文中的任何其他bean一样:

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


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

@Service注释采用可选字符串值,可用于为bean指定您选择的名称。例如,如果您的自定义bean看起来像:

@Service("mySpecialName")
public class MyClass { ... }
那么,您的xml可能有:

<bean class="com.someone.else.library.SomeClass">
  <property name="someProp" ref="mySpecialName"/>
</bean>

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

<context:component-scan base-package="" />
<context:annotation-config />