春-豆の自動配線
XML構成ファイルで<bean>要素を使用してBeanを宣言し、<constructor-arg>要素と<property>要素を使用して<bean>を注入する方法を学習しました。
春のコンテナはできます autowire <constructor-arg>要素と<property>要素を使用せずにコラボレーションするBean間の関係。これにより、Springベースの大規模なアプリケーション用に作成するXML構成の量を削減できます。
自動配線モード
以下は、依存性注入に自動配線を使用するようにSpringコンテナーに指示するために使用できる自動配線モードです。<bean />要素のautowire属性を使用して指定しますautowire Bean定義のモード。
シニア番号 | モードと説明 |
---|---|
1 | no これはデフォルト設定であり、自動配線がないことを意味します。配線には明示的なBean参照を使用する必要があります。この配線には特別なことは何もありません。これは、依存性注入の章ですでに見たものです。 |
2 | 名前で プロパティ名による自動配線。Springコンテナーは、XML構成ファイルでautowire属性がbyNameに設定されているBeanのプロパティーを調べます。次に、そのプロパティを構成ファイルで同じ名前で定義されたBeanと照合してワイヤリングしようとします。 |
3 | byType プロパティデータ型による自動配線。Springコンテナーは、XML構成ファイルでautowire属性がbyTypeに設定されているBeanのプロパティーを調べます。次に、プロパティのマッチングとワイヤリングを試みます。type構成ファイル内のBean名の1つと正確に一致します。そのようなBeanが複数存在する場合、致命的な例外がスローされます。 |
4 | constructor Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised. |
5 | autodetect Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType. |
You can use byType or constructor autowiring mode to wire arrays and other typed-collections.
Limitations with autowiring
Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.
Sr.No. | Limitations & Description |
---|---|
1 | Overriding possibility You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring. |
2 | Primitive data types You cannot autowire so-called simple properties such as primitives, Strings, and Classes. |
3 | Confusing nature Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring. |