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

时间:2013-07-05 21:31:22

标签: spring spring-3 spring-annotations

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

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

是否有创建XML Bean定义的替代方法?

详细信息: Spring 3.0.7

3 个答案:

答案 0 :(得分:35)

无论如何创建(基于XML或annotation-元数据),每个bean都以唯一名称在应用程序上下文中结束。

如果您刚刚使用@Component或衍生物注释了您的类,而没有说明任何名称,则将应用默认命名方案,并且bean名称将是您的类名,第一个字符为小写:{{1 }}

考虑到这一点,如果您需要在XML bean定义中注入该bean,那么就像上下文中的任何其他bean一样:

ClassName => "className"

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

答案 1 :(得分:6)

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

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

然后你的xml可能有:

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

答案 2 :(得分:0)

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

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