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

Mik*_*der 22 spring spring-annotations spring-3

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

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

有没有替代方法来创建XML Bean定义?

详细信息: Spring 3.0.7

Cos*_*atu 35

无论如何创建(基于XML或annotation-元数据),每个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>
Run Code Online (Sandbox Code Playgroud)

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


Ian*_*son 7

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

@Service("mySpecialName")
public class MyClass { ... }
Run Code Online (Sandbox Code Playgroud)

然后你的xml可能有:

<bean class="com.someone.else.library.SomeClass">
  <property name="someProp" ref="mySpecialName"/>
</bean>
Run Code Online (Sandbox Code Playgroud)