RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
SELECTED ENTRIES
RECENT COMMENTS
RECENT TRACKBACK
CATEGORIES
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS

05
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--

bose999's memo

<< BLIを中心において、まわりを考えてみる | main | 製造からのフィードバックに感謝! >>
なぜ、BLI Frameworkを使うとActionクラスを流用できるの?
0
    タイトルの内容をBLI Frameworkを使用して、
    コーディングをする人に説明をしたので、メモしときます。
    
    BLI Frameworkでは、StrutsActionに関しては
    SpringのDelegatingActionProxyクラスから
    StrutsActionを呼び出す方法を取ります。
    
    実装としては、BliStrutsActionを継承して
    jp.sf.bli.ss.sample.SampleActionのようなクラスを
    アプリケーションの要件に応じて最小の個数だけ作成します。
    
    ここでいうアプリケーションの要件とは
    doProcessBefore、doProcess、doProcessAfterという
    BliStrutsActionのメソッドの記述に差異が必要になる要件を
    指します。
    
    つまり、その要件のパターン数だけ作成するだけになります。
    
    jp.sf.bli.ss.sample.SampleActionでは、 遷移先はsuccessにて正常終了とfailureでアプリケーションで 判定できるエラー終了とし、fatalでExceptionを 伴うような異常処理としています。 このくらいの遷移パターンで完結させて設計すると わかりやすくなりミスを防げたり保守しやすくなります。 私は大抵、このくらいで実装する事が多いです。 遷移の選択肢が多い場合は設計を見直すことが多いです。
    そして、実際のビジネスロジックはBliStrutsActionに SpringがInjectionするblCtrlによって決まるのです。 SpringのXMLファイルの設定でblCtrlをInjectionする事により、 BliStrutsActionの継承クラスは何パターンものxxx.doとして 動作可能になります。 #この考え方がBusiness Logic InjectionというBLIの持つ意味の一つを指しています。 結果、Actionクラスをコーディングする個数が激減されます。 【struts-configの設定例】 <action-mappings> : <action path="/search" type="org.springframework.web.struts.DelegatingActionProxy" name="searchForm"> <forward name="success" path="/jsp/search.jsp"/> <forward name="failure" path="/jsp/menu.jsp"/> </action> <action path="/createNew" type="org.springframework.web.struts.DelegatingActionProxy" name="createNewForm"> <forward name="success" path="/jsp/createNew.jsp"/> <forward name="failure" path="/jsp/menu.jsp"/> </action> : </action-mappings> ※fatalに関してはGlobal Forwardにて「システム管理者に問い合わせて下さい」  のような画面を表示します。 【Springの設定例】 <bean name="/search" class="xxx.common.LoginAction"> <property name="blCtrl"> <ref bean="searchBLCtrl" /> </property> <property name="mesInitFlag"> <value>1</value> </property> <property name="loginChkFlag"> <value>1</value> </property> </bean> <bean id="searchBLCtrl" class="xxx.search.SearchBLCtrl"> <property name="blValidate"> <ref bean="searchBLValidate"/> </property> <property name="blList"> <list> <ref bean="selectBlDo" /> </list> </property> </bean> <bean name="searchBLValidate" class="xxx.search.SearchBLValidate"> <property name="validateConfigFile"> <value>xxx.resources.Validate</value> </property> </bean> <bean name="selectBlDo" class=xxx.search.SelectBlDo"> <property name="selectDao"> <ref bean="selectDao" /> </property> </bean> <bean name="selectDao" class="xxxx.dao.impl.SelectDaoImpl"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean> <bean name="/createNew" class="xxx.common.LoginAction"> <property name="blCtrl"> <ref bean="createNewBLCtrl" /> </property> <property name="mesInitFlag"> <value>1</value> </property> <property name="loginChkFlag"> <value>1</value> </property> </bean> <bean id="createNewBLCtrl" class="xxx.createNew.CreateNewBLCtrl"> <property name="blValidate"> <ref bean="createNewBLValidate"/> </property> <property name="blList"> <list> <ref bean="createNewBlDo" /> </list> </property> </bean> <bean name="createNewBLValidate" class="xxx.createNew.CreateNewBLValidate"> <property name="validateConfigFile"> <value>xxx.resources.Validate</value> </property> </bean> <bean name="createNewBlDo" class=xxx.createNew.CreateNewBlDo"> <property name="insertDao"> <ref bean="insertDao" /> </property> </bean> <bean name="insertDao" class="xxxx.dao.impl.InsertDaoImpl"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean>
    | BLI Framework | 21:55 | comments(0) | trackbacks(0) | - | - |









    http://bose.techie.jp/trackback/508161