-純国産DIコンテナ #contents *diconファイル [#gd6b9a63] **インスタンスのライフサイクル [#d8aae47d] prototypeが今までのnewで作成するのと近い http://s2container.seasar.org/2.4/ja/DIContainer.html#InstanceMode **読み込みルール [#mc63a930] -ファイル、クラスパスから取得可能。 -同一のdiconファイルでコンポーネントキー重複登録は実行時にエラーとなる -別々のdiconファイルでコンポーネントキー重複登録は先に登録されたものが優先。 **OGNLについて [#qd1450ab] -diconで定義するプロパティにListやMapなどを設定したい場合は下記参照。 http://s2container.seasar.org/2.4/ja/ognl.html <!-- List --> <!-- Listをクラスのプロパティとして設定したいときは入れ子の中でproperty --> <property name="list">{"green", "red", "blue"}</property> <!-- Listを直接取得したいときはcomponent --> <component name="list">{"green", "red", "blue"}</conponent> *Auto-Binding [#udff4174] org.seasar.framework.container.IllegalAutoBindingPropertyRuntimeException: [ESSR0080]クラスSomeClassのプロパティ(hogew)の自動設定に失敗しました プロパティ名とクラス名があってないと上記Exceptionがでる。 あとActionとService以外でAutoBindingを使うとこのエラーが出る。ちゃんとdiconに登録すること **コンポーネントの自動登録 [#s9cacfe9] コンポーネント検索元をファイルシステム、JAR、その両方に設定できる。 -FileSystemComponentAutoRegister -JarComponentAutoRegister -ComponentAutoRegister *Cool DeployとHot Deploy [#j5ce7dab] 切替 s2container.diconを変更する。 <include condition="#ENV == 'ut'" path="warmdeploy.dicon"/> *SAStruts [#q9c88125] スーパアジャイルの略。設定ファイル不要でS2Strutsの後発ながら注目度抜群。 **セットアップ [#xf7f052b] 3.4.1を日本語化して、Tomcatプラグインを入れたものにダウンロード&解凍したものをインポートする。 **基本ルール [#h191a381] +PATHINFOでactionを呼び出す。 +リクエストパラメータはActionのpublicフィールドに代入される(このときにvalidationルールをアノテーションにより指定可能)。ActionFormを指定することも可能で検証用メソッドなどActionに入れすぎると肥大化する場合はこちらに分離したほうが良いかも。 +戻りのJSP名をリターンする。 **publicフィールドとActionFormの優先度 [#h4337b87] publicフィールドとActionFormは併用可能。両方に同名フィールドがあった場合はpublicフィールドが優先されるようだ。ただしnullだった場合は使われない。 インプットの場合はpublicフィールドは無視されて、常にActionFormに入る。 *S2Struts [#g9b2dd0c] SAStrusよりも前に出ている分ちと使いづらい点が目立つ。 **S2Strutsの命名規約 [#sc121411] Sample.doで呼び出すとすると |Action|SampleActionImpl| |Service(Logic)|SampleServiceImpl| |DTO(ActionForm)|SampleDTO| |JSP(html)|sample.jsp| *S2DAO [#a5df30d8] データソースの定義はj2ee.diconに <component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl"> <property name="driverClassName"> "org.postgresql.Driver" </property> <property name="URL"> "jdbc:postgresql://rutake.ddo.jp:5432/hellodb" </property> <property name="user">"xxxxxx"</property> <property name="password">"xxxxxx"</property> </component> *S2JDBC [#icdc09bb] -ログを出す // TODO あとで削除 SqlLogRegistry sqlLogRegistry = SqlLogRegistryLocator.getInstance(); SqlLog sqlLog = sqlLogRegistry.getLast(); System.out.println(sqlLog.getCompleteSql()); *S2JUnit4 [#g14666d1] http://s2container.seasar.org/2.4/ja/S2JUnit4.html JUnit4のSeasar拡張版。 **必要なもの [#gd16d806] +s2junit4.dicon +テスト実行クラスに@RunWith(Seasar2.class) #counter