我正在使用一个外部库,它要求我使用XML Bean定义来配置它;在Bean定义中,我需要从我的项目中提供一个带有Bean的外部类。我正在使用带有组件扫描的spring注释。
如何在XML Bean定义中引用带注释的Bean?
是否有创建XML Bean定义的替代方法?
详细信息: Spring 3.0.7
答案 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 />