« とりあえず、動くもの | メイン | ColdSpring で Bean へデータを渡す »

ColdSpring

ColdSpring を活用してみよう。
すでに ColdSpring の機能である、“DI”というものについての記述は、たくさんあるので、どのように使うかを見ていく。
よい題材が思いつかなかったので、Common.cfc で生成していた商品リストを「強引に」ColdSpring でやってみよう。
ColdSpring.xml に下記のように記述する。

 <bean id="itemArrayBean" class="shopping.model.ItemArrayBean">
  <property name="itemArray">
   <list>
    <map>
     <entry key="name"><value>光学式マウス</value></entry>
     <entry key="price"><value>2600</value></entry>
    </map>
    <map>
     <entry key="name"><value>ボール式マウス</value></entry>
     <entry key="price"><value>1100</value></entry>
    </map>
    <map>
     <entry key="name"><value>レーザー式マウス</value></entry>
     <entry key="price"><value>4800</value></entry>
    </map>
   </list>
  </property>
 </bean>

ここで注意しなければならないのは、Model-Gule は、ColdSpring.xml などのファイルを、OSのデフォルトエンコーディングを前提に
読み込んでいるらしく、Windows で動作させる場合は、Shift_JIS で保存しなければ、文字化けしてしまった。

 <?xml version="1.0" encoding="UTF-8"?>

としても、だめだった。他のOSでは試していないので、あくまで、推測である。
自動で判別してくれるとか、先頭行をチェックしてから読み込むということは、してくれないようである。

shopping.model.ItemArrayBean は、商品リストデータを保持するコンポーネント。
Java でいうところの、Bean ということになる。ColdSpring でも、この Bean という単語を採用している。
デフォルトでは、リクエストごとに、インスタンスが生成されているようだ。
固定値を保持するような Bean は、アプリケーションで1インスタンスでいいのだから、何かしら、やり方があるのだろうか。
singleton とかの記述もマニュアルにあるし、できそうな雰囲気もあるが、試していない。

では、実際に、これを利用するためには、どうすればよいのか。
コントローラーでは、非常に簡単に利用できる。
getModelGlue().getBean("itemArrayBean") これだけで、取得できてしまうのである。
Controller.cfc にある、onRequestStart 関数に
<cfset variables.itemArrayBean = getModelGlue().getBean("itemArrayBean") /> とすれば、Controller.cfc 上では、いつでも、利用可能になる。

また、あたかも、AutoWire のように、

 <cffunction name="setItemArrayBean" access="public" returnType="void" output="false">
  <cfargument name="itemArrayBean" type="any">
  <cfset variables.itemArrayBean = arguments.itemArrayBean />
 </cffunction>

としてやるだけでも、取得できてしまう。
「あたかも、AutoWire のように」としたのは、ColdSpring.xml の bean タグに、AutoWire の設定することなく、
setter 関数が処理されたためにこのような表現をした。コントローラーは、本当に特別なもののようだ。
AutoWire については、また、後日、読み解いてみたい。

トラックバック

このエントリーのトラックバックURL:
http://www.schwarzmond.info/mt/mt-tb.cgi/45

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年04月22日 10:19に投稿されたエントリーのページです。

ひとつ前の投稿は「とりあえず、動くもの」です。

次の投稿は「ColdSpring で Bean へデータを渡す」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。