web-dev-qa-db-ja.com

XML Bean定義での注釈付きSpringコンポーネントの参照

XML Bean定義を使用して構成する必要がある外部ライブラリを使用しています。 Bean定義で、プロジェクトのBeanを外部クラスに提供する必要があります。コンポーネントスキャンでSpringアノテーションを使用しています。

XML Bean定義内で注釈付きBeanを参照するにはどうすればよいですか?

XML Bean定義を作成する代替手段はありますか?

詳細: Spring 3.0.7

23
Mike Rylander

(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を適切に見つけることができます。

36
Costi Ciudatu

@Serviceアノテーションは、Beanに任意の名前を付けるために使用できるオプションのString値を取ります。たとえば、カスタムBeanが次のようになっているとします。

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

次に、あなたのxmlは次のようになります:

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

以下のコードをxmlファイルに追加してください

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