DIコンテナ 前 回 ご 説 明 したSpring DIコンテナに 共 通 するこ とは 依 存 を 注 入 することによってシステム 内 に 存 在 するオブジェクト 同 士 の 結 びつきを 緩 くすることで あり そのための 仕 組 み 提 供 を 意 味 する [Spring のDIコンテナ



Similar documents
Spring Framework 2.0  デファクトスタンダードDIコンテナの現在と未来

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

1

<95CA8E A4F C B A C E786C7378>

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

(Microsoft PowerPoint -

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

Microsݯft Word - 91 forܠ2009November.docx

2. 事 務 連 絡 者 用 メニュー (1) 登 録 変 更 申 請 委 員 会 メンバー メンバー 個 人 情 報 企 業 情 報 の 変 更 および JIRA 会 員 を 退 会 する 場 合 こ のメニューから 各 種 申 請 を 行 います 申 請 後 変 更 内 容 を JIRA 事 務

社会保険等に加入しましょう -みんなで取り組む保険加入-

研究者情報データベース

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

Enterprise Architect日本語版 モデリング操作ガイド (データベースモデリング編)

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

<82C582F182B382A2322E3594C5837D836A B2E786C73>

大田市固定資産台帳整備業務(プロポーザル審査要項)

Microsoft Word - ML_ListManager_10j.doc

シラバスの作成と管理用Webシステムの開発

スライド 1

スライド 0

XML形式の電子報告書作成に当たっての留意事項

雇用保険被保険者資格取得届(様式)編

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

PATENTBOY/Netバージョンアップ説明書(Ver.1.92)

< 現 在 の 我 が 国 D&O 保 険 の 基 本 的 な 設 計 (イメージ)> < 一 般 的 な 補 償 の 範 囲 の 概 要 > 請 求 の 形 態 会 社 の 役 員 会 社 による 請 求 に 対 する 損 免 責 事 由 の 場 合 に 害 賠 償 請 求 は 補 償 されず(

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

平成19年度総務省高度情報通信人材育成事業

01_07_01 データのインポート_エクスポート_1

原薬等登録原簿(マスターファイル)制度について

2 学 校 への 支 援 方 法 CMS(NetCommons)の 操 作 説 明 会 2-1 操 作 説 明 会 平 成 26 年 度 も 学 校 ホームページ 作 成 運 用 における 支 援 となるよう 操 作 説 明 会 を 実 施 した 基 礎 編 としてCMS(NetCommons)の

セマンティック HTML/XHTML サンプルページ

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

<4D F736F F F696E74202D20838C837C815B B F A2E B93C782DD8EE682E890EA97705D>

目 次 1. 本 マニュアルについて D-Case ステンシルの 導 入 概 要 インストール D-Case 編 集 D-Case メニュー ノード リンク..

Transcription:

SpringとStruts Struts 連 携 トラストサービス 2006/05/27

DIコンテナ 前 回 ご 説 明 したSpring DIコンテナに 共 通 するこ とは 依 存 を 注 入 することによってシステム 内 に 存 在 するオブジェクト 同 士 の 結 びつきを 緩 くすることで あり そのための 仕 組 み 提 供 を 意 味 する [Spring のDIコンテナはBean 定 義 ファイルに 基 づき JavaBeansの 管 理 と 構 成 を 行 う(Beanファクトリと Bean ファクトリの 上 に 構 成 されるApplicationコンテキストによっ てDIコンテナは 構 成 されている)] Bean 定 義 ファイル(デフォルト:applicationContext.xml)

DIコンテナ またSpringは Setter Injectionと 呼 ばれる 手 法 (オブジェクト 間 の 関 連 がXMLファイルに 記 述 され DIコンテナがオブジェクト のSetterメソッドを 利 用 して 参 照 するオブジェクトを 設 定 すること) Constructor Injectionと 呼 ばれる 手 法 (DIコンテナが オブジェクトのコンストラクタのパラメータとして 参 照 する オブジェクトを 設 定 する 参 照 するオブジェクト 参 照 され るオブジェクトの 作 成 は 開 発 者 が 行 い コンテナには 関 連 付 けだけを 依 頼 する (Seasar2もSpringと 同 様 の 上 記 2つをサポートしている)

SpringはなぜWEBアプリケーション 開 発 に 必 要 なのか システム 構 築 を 検 討 していく 上 で 開 発 者 のためのアーキテクチャとして 開 発 効 率 テスト 精 度 保 守 (デバッグ)や 拡 張 ( 二 次 開 発 ) のしやすい 設 計 が 必 要 である 開 発 効 率 意 図 を 把 握 しやすく 理 解 しやすい 構 造 を 設 計 (5000ページもあるド キュメントを 読 まないとわからないのはよくない) テストが 容 易 に 行 える 構 造 を 設 計 (テストをするのにライブラリにクラスパスを 通 さなければならないとか WEBコンテナを 用 意 したり テストのために 実 装 変 更 をするのはよくない) 柔 軟 性 保 守 しやすく 拡 張 しやすい 構 造 を 設 計 (システムに 対 するユーザ 要 求 が 変 化 しやすいため) 将 来 の 環 境 の 変 動 に 耐 える 頑 健 な 構 造 を 設 計

SpringはなぜWEBアプリケーション 開 発 に 必 要 なのか アスペクトの 注 入 Spring Aspect Injection を 利 用 することでビジネス 層 で 業 務 ロジックを 実 現 するオブジェクトはフレームワークや コンテナに 依 存 しないPOJOで 作 成 することができる 独 立 した 業 務 ロジックを 作 れることはSpringの 設 計 上 の 最 大 の 魅 力 点 だと 思 われる 開 発 効 率 がよいまた 保 守 性 や 拡 張 性 に 強 い 設 計 が 実 現 できると 思 われる POJO :Plain Old Java Object の 略 語 Pure JAVA 昔 ながらのJAVA

StrutsとSpringを 連 携 させる 場 合 の 問 題 点 プレゼンテーション 層 ビジネスロジック 層 Action Servlet Action この 関 連 構 築 をどうするか サービスオブジェクト Struts 生 成 生 成 Spring(DIコンテナ) 今 回 は 説 明 しないが データアクセス 層 が 実 装 modelとしてある

2つの 解 決 方 法 プレゼンテーション 層 ビジネスロジック 層 Springが 提 供 するクラス DelegatingActionProxyを 利 用 する Action Servlet 代 理 クラス Action サービス オブジェクト 生 成 生 成 注 入 生 成 Struts Spring(DIコンテナ)

2つの 解 決 方 法 プレゼンテーション 層 サポート クラス ビジネスロジック 層 Springが 提 供 する 抽 象 クラス ActionSupportを 利 用 する Action Servlet Action サービス オブジェクト Struts 生 成 生 成 Spring(DIコンテナ) 抽 象 クラスActionSupportはstrutsのActionを 継 承 しているが Springと 連 携 する 際 にActionをサポートするメソッドを 幾 つか 追 加 しているだけであることに 注 意 したい

シーケンス 図 入 力 項 目 : 姓 + 名 前 を 連 結 する

画 面 遷 移

入 力 した 姓 * 名 が 連 結 して 表 示 される 画 面 遷 移

jsp <%@ page language="java" pageencoding="windows 31J" contenttype="text/html; charset=windows 31J" %> <html:form action="/login" method="post"> <TABLE border="0"> <TR><TD><bean:message key="label.firstname"/></td> <TD><html:text property="firstname"/></td> </TR> <TR><TD><bean:message key="label.lastname"/></td> <TD><html:text property="lastname"/></td></tr> <TR> <TD colspan="2" align="center"> <html:submit property="button"> <bean:message key="welcome.button"/> </html:submit> </TD></TR> <TR><BR></TR> <TR><TD bgcolor="pink" colspan="2" align="center"> <bean:write name= loginform property= fullname /> </TD> </TR> </TABLE> </html:form>

ApplicationContext.xml

LoginActionクラス WebApplicationCont ext()からbeanを 取 得

ビジネスLogic

通 常 Actionクラスの 実 装 Struts 基 本 処 理 フロー Public class SampleAction extends Action{ ( 省 略 ) public ActionForward execute( ActionMapping mapping, ActionForm form, HttpRequest requset, HttpResponse response){ Actionクラスは 通 常 ビジ ネス 層 のオブジェクトを 生 成 してビジネスロジックを 呼 び 出 している ActionSupportService actionservice = new ActionSupportService(); String fullname = sampleservice.createfullname( firstname,lastname); ( 省 略 ) } }

Struts Spring 基 本 処 理 フロー ActionSupportクラスの 実 装 Public class SampleAction extends SapportAction{ ( 省 略 ) public ActionForward execute( ActionMapping mapping, ActionForm form, HttpRequest requset, HttpResponse response){ ActionSupportService actionservice = (actionservice) getwebapplicationcontext.getbean( loginservice ); String fullname = actionservice.createfullname( firstname,lastname); ( 省 略 ) } }

まとめ ビジネスロジック 層 が 変 更 されても Actionクラス 内 は 変 更 せず 読 み 込 むxmlファイルの<bean id= class 名 = >を 変 更 するだけで OK!! 上 記 を 実 現 するためSpringが 提 供 しているActionSupport を 継 承 して 実 装 することでSpring application contextへのリファランスが 取 得 でき ていることが 保 守 や 拡 張 のしやすさが 実 現 できると 思 われる (getwebapplicationcontext()メソッド) ActionSupportは 簡 単 にSpringとStrutsの 連 携 ができるが デメリッ トとしてSpring AOPが 使 えないことがあげられる

Bean 定 義 ファイル Bean 定 義 ファイル 例 <beans> <bean id = オブジェクトA class= パッケージ 名.クラス 名 A > <property name= 変 数 名 ><value> 文 字 列 </value></property> <property name= 変 数 名 ><value> 文 字 列 </value></property> </bean> <bean id= オブジェクトB class= パッケージ 名.クラス 名 B > </bean> <bean id= オブジェクトC class= パッケージ 名.クラス 名 C > <property name= 変 数 名 ><ref bean= オブジェクト 名 B /> </property> </bean> <beans>

属 性 id name class parent singleton lazy-init beanタグの 属 性 意 味 オブジェクト 名 オブジェクトに 別 名 をつける 空 白, ; で 区 切 る ことにより 複 数 の 名 前 をつけることができる StrutsプラグインなどContextLoaderPlaginを 利 用 した 場 合 使 用 する idの 実 装 パッケージ 名 +クラス 名 設 定 情 報 を 引 き 継 ぐオブジェトのidを 指 定 する true 属 性 を 省 略 した 場 合 のデフォルト メソッドgetBean で 取 得 する オブジェクトはシングルトン false メソッドgetBean 取 得 するオブジェクトは 毎 回 インスタンス 化 されたもの true オブジェクトの 生 成 を 遅 らせる false 属 性 を 省 略 した 場 合 のデフォルト Beanファクトリの 起 動 時 にオブジェクトを 生 成 する

beanタグの 属 性 属 性 意 味 Autowire no 省 略 した 場 合 デフォルト <property>タグには<ref>タグ で 指 定 されたオブジェクトがプロパティに 設 定 される byname 指 定 した 名 前 のオブジェクトがプロパティに 設 定 される byname=employee はsetEmployee()に 相 当 bytype 指 定 されたタイプのオブジェクトがプロパティに 設 定 される constructor bytypeと 同 義 Type3 利 用 時 に 利 用 する autodetect bytypeもしくはcustrutorのいずれかを 実 行 する dependency-check none simple object all 属 性 を 省 略 した 場 合 デフォルト 依 存 関 係 のチェックをしない プロパティに 基 本 型 が 設 定 されているかチェック プロパティにオブジェクトが 設 定 されているかチェック simpleとobjectの 複 合

beanタグの 属 性 属 性 意 味 depend-on 依 存 関 係 の 対 象 となるオブジェクトの 存 在 をチェックする init-method メソッド 名 を 記 述 することにより プロパティの 設 定 後 に 呼 ばれる ここで 指 定 するメソッドには 引 数 がないこと destroy-method メソッド 名 を 記 述 することにより システム 終 了 時 に 呼 ばれる ここで 指 定 するメソッドを 持 つオブジェクトは シングルトンであること