ColdSpring in MG:Unity No.3
ColdSpringの公式ドキュメントのAutoWiringを意訳してみました。
前回紹介したpropertyチャイルドタグ/constructor-argチャイルドタグは、依存性の注入方法を規定していましたが、beanタグのautowire属性はColdSpringが注入先のCFCをどのようにして発見するかを規定していて、autowire属性が指定されていれば、セッターメソッドは不要であることが記述されています。
また、autowiringの設定には、"byName"および"byType"の2つがあるようです。
"autowire"とは、Bean定義用xmlファイルでお互いの依存性を定義せずに、ColdSpringのbeanFactoryが依存する相互のオブジェクトを自動的に結合する能力のことを指します。
ColdSpring beanFactoryの中でCFCsを定義すると、ColdSpringは各CFCのメタデータを点検して、他のCFCにpropertyかconstructor-argで指定するものがあるかどうかを探します。
autowiringはBeanFactory内で、デフォルトで'オフ'にされていますが、'オン'にセットすると(bean全体かbeanの要素毎にセットできます)、ColdSpringは自動的に、依存性の注入(と自動的にオブジェクト結合)を行います。
autowiringの設定には、"byName"および"byType"の2つがあります。
推測できると思いますが、"byName"は、beanのname属性つまりCFC内にsetSomeService(...)メソッドか"SomeService"をコンストラクタ引数に持つCFCとColdSpring.xmlでid="SomeService"がある<bean/>内のCFCを結合し、"SomeService"を該当するCFCにいつでも注入します。
"byType"は、ColdFusionコード内に"type"属性、つまり、セッターメソッドの引数(または、コンストラクタ引数に) type="type.of.SomeService"を使用することによって、ColdSpring.xmlにclass="type.ofSomeService"があるbeanがあれば、そのbeanを該当するCFCにいつでも注入します。
benaタグのエンティティ全体にautowiringをセットするには、default-autowire属性を使用してください:
<beans default-autowire="byName">
<bean id="cfc1" class="..."/>
<bean id="cfc2" class="..."/>
...
</beans>
各々のbean(default-autowire設定をオーバライドすることになります)にautowiringをセットするには、autowire属性を使用してください:
<beans>
<bean id="cfc1" class="..." autowire="byType"/>
<bean id="cfc2" class="..."/>
<bean id="cfc3" class="..." autowire="byName"/>
...
</beans>
コメント