38

エイリアスの使用法について混乱しています。エイリアスとは何か、それがどのように使用されているかは理解していますが、Bean 定義で名前を使用する場合とどう違うのかわかりません。

<bean id="xyx" name="abc,def" .. />

<alias name="xyx" alias="pqr"/>

abc または def を使用できるのにエイリアスを使用するのはなぜですか?

4

5 に答える 5

28

私の考えでは、Beanエイリアシングは、Bean名を操作できない大規模なシステムで役立つ可能性があります。システムの自分の部分に固有の独自の名前(エイリアス)を作成するオプションがあります...

Springのドキュメント(3.0.x)から http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/

...単一のBeanに複数の名前を付けることが望ましい場合があります。これはBeanエイリアシングとも呼ばれます...

したがって、複数の名前を作成したり、エイリアシングを行ったりすることは同じです。

于 2013-03-04T22:32:48.550 に答える
9

モジュラーアプリケーションのどこかですでに定義されているいくつかの Bean をカスタマイズしたい場合 (たとえば、各モジュールは Spring プロジェクトです)、Bean はサードパーティのフレームワーク/API またはチームによって定義されている可能性があります。その場合、Spring プロジェクト内でのみ、他のモジュール (プロジェクト) を変更せずにカスタマイズされたバージョンを呼び出す必要があります。これを行うには、本当に強力な機能である Spring 構成にエイリアスを追加するだけです。

<alias alias="globalBeanService" name="customizedBeanService" />

したがって、Spring が globalBeanService への呼び出しを見つけるたびに、特定のモジュール内に CustomizedBeanService を挿入します。この機能がなければ、すべてのクラスを調べて手動で Bean を変更する必要があります!!

于 2017-09-14T09:05:07.987 に答える
4

エイリアスが設定された Bean は、エイリアスが設定されていない Bean よりも常に優先度が高く、同じエイリアスを持つ別の Bean がある場合は、最後に宣言された Bean が優先されます。言い換えれば、エイリアス化された Bean は、エイリアス化されていない Bean をオーバーライドします。これは、大きなプロジェクトを作成する場合、またはプロジェクトの拡張機能を構築していて、元の Bean 定義に触れたくない場合に特に役立ちます。

于 2017-02-15T14:08:02.557 に答える
1

エイリアスには、複数の名前にはない特定の使用シナリオがあります。

プロジェクトに複数の構成 xml ファイルがあり、そのほとんどが同僚によって作成されており、独自の config.xml ファイルを追加する必要があるとします。を使用すると、同僚の構成ファイルに触れることなく、別の構成ファイルで定義された Bean を別の名前で参照できます。これは、構成にとってより意味のあるものかもしれません。

于 2016-11-01T01:56:52.247 に答える
1

最近、エイリアスが問題を簡単に解決する別のユースケースを見つけました。

serverProperties自動構成がアクティブな場合、Spring Boot は、現在 Web アプリを実行しているサーバーに関する情報にアクセスするために使用できるBean を提供します。

統合テスト (つまり、@SpringBootTestアノテーションが存在する場合) では、同じ Bean が名前で利用可能ですorg.springframework.boot.autoconfigure.web.ServerProperties

もちろん、統合テストに別のプロファイルを使用することは可能ですが、それには複数の場所で構成を手動で変更する必要があります。ただし、単純に追加するだけで

<alias name="serverProperties" alias="org.springframework.boot.autoconfigure.web.ServerProperties"/>

統合テストと本番環境で同じ構成ファイルを使用できます。

これは Spring Boot のバグかもしれませんが、エイリアスは新しいリリースを待たずに問題を簡単に解決します。そして、間違いなく、ブート構成を自分で変更する可能性はありません。

于 2016-12-06T12:55:07.693 に答える