「Spring入門 第1章 Webアプリケーション概論」の編集履歴(バックアップ)一覧はこちら
「Spring入門 第1章 Webアプリケーション概論」(2005/09/07 (水) 22:56:28) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<b>CGIの問題点<br></b>
<ul>
<li>処理要求のたびにプログラムが起動されること</li>
<li>セッション管理がない</li>
<li>
ページの生成ロジックとビジネスロジックを分離するのが困難<br>
</li>
</ul>
→処理要求が多いときのパフォーマンス劣化やトランザクション管理の難しさにつながる<br>
<br>
→JSP・Servletが登場<br>
<ul>
<li>
JSP・Servletはマルチスレッドで実行され、実行基盤であるwebコンテナは勝手にセッション管理を行ってくれる。</li>
<li>
JSPページで生成を行いビジネスロジックをServletで行える</li>
</ul>
<b>EJB(Enterprise JavaBeans)の登場と衰退<br></b> EJBコンテナによってできること<br>
<ul>
<li>
分散して存在するEJBコンポーネントをあたかも同一マシン上に存在しているかのようにアクセスする</li>
<li>
分散して存在するデータベースのトランザクションをあたかも1つのDBしかないようにトランザクション制御する。</li>
</ul>
EJBはもともと分散環境の為のコンポーネントとして登場した。だからJSPやServletといったWebアプリケーションのための技術ではなかった。<br>
で、EJBはいつのまにか「再利用可能なコンポーネント」とか「SQLの記述が不要なDBアクセスフレームワーク」になってしまった。。<br>
<br>
前回のEJBの問題点プラスこんな問題点も。<br>
<ul>
<li>
EJBはもともと分散用のコンポーネントなのでリモートアクセスしかない→Webアプリケーションでは分散処理はめったにつかわないからローカルアクセスがしたくなる</li>
<li>EJBコンテナに依存しているEJBはテストがしにくい</li>
</ul>
でももうちょっとしたらEJB3.0が登場する。<br>
「SQLの記述が不要なDBアクセスフレームワーク」に近いものとして再登場。<br>
<br>
<b>DIコンテナ<br></b>アプリケーションが自らnewしなくてもアプリケーションが必要なobjをコンテナが勝手にobjのプロパティまで設定してくれた状態でアプリケーションに設定してくれる。<br>
<br>
J2EEはちょっと重過ぎる→軽量コンテナの登場<br>
<span style="color: rgb(51, 102, 255);">軽量コンテナとは</span><br>
<b><span style=
"color: rgb(0, 204, 204);">POJO(PlainOldJavaObject)</span></b>と呼ばれる普通のオブジェクトのライフサイクルの管理や、オブジェクト間の依存関係の解決を行うアーキテクチャを実装したコンテナ。<br>
<br>
<span style=
"color: rgb(255, 153, 255);">代表的な軽量コンテナ<br></span>
<ul>
<li>Spring</li>
<li>PicoContainer</li>
<li>Seasar</li>
<li>HiveMind</li>
</ul>
など。<br>
<br>
<span style="color: rgb(255, 102, 0);">軽量コンテナ</span><br>
IoC(Inversion of Control)<br>
「制御の逆転」<br>
「ハリウッド原則」<br>
→IoCからDIコンテナに言い換えられるようになる。<br>
<br>
DIコンテナの基本的な機能<br>
<ul>
<li>
オブジェクトのインスタンス生成や、Singletonオブジェクトとしての提供などライフサイクル管理機能</li>
<li>オブジェクト間の関連の制御を行う機能</li>
<li>
JavaコードやXMLなどで定義された設定コードを読み込みオブジェクトのライフサイクル管理や、オブジェクト間の関連を解決する機能<br>
</li>
</ul>
<b>Singleton:</b><i>アプリケーション全体で、唯一のオブジェクトを生成するパターンを意味します。</i><br>
<br>
<b>Aspect Injection<br></b>Springのような高機能DIコンテナは宣言的に横断的な関心ごと(ログ出力や例外処理など)をPOJOに対して注入することができる。←Aspect Injection(AI)<br>
<br>
アスペクト指向<br>
子供(Object)<br>
特殊なプレート(Aspect)<br>
お母さん(DIコンテナ)<br>
<br>
子供は遊ぶことが仕事、宿題はしたくない。<br>
なのでお母さんのおなかの中にいる子供の脳に特殊なプレートを転送して埋め込む。<br>
埋め込まれた子供は「あそぼー」のメッセージを受け取ると脳に仕込まれた特殊なプレートが動き出し、そのプレートから触角状の手がでてきて宿題をはじめる。<br>
おわるとなにごともなかったかのように子供はあそびに出かける。<br>
<br>
AIとはお腹の中の子供に特殊なプレートを埋め込むこと。<br>
<br>
<b>EJBの後継として<br></b>高機能DIコンテナはEJBの利点である宣言的なトランザクション管理をAIを利用することによってPOJOで実現することが可能。<br>
DBアクセスはO/Rマッピングフレームワークを利用すればよい。<br>
<br>
<u><span style=
"color: rgb(0, 153, 0);">EJBのかわりにDIコンテナを利用する最大の理由<br>
</span></u><span style="color: rgb(0, 153, 0);"><span style=
"color: rgb(0, 0, 0);">DIコンテナに載せることが可能なオブジェクトがPOJOと言われる普通のJavaオブジェクトということ。<br>
EJBコンテナに依存したEJBコンポーネントはユニットテストが行いにくいなどの問題点あり。<br>
<br>
DIコンテナに管理されているPOJOはDIコンテナに依存してないから単体テストがしやすい。<br>
<br style="color: rgb(51, 51, 255);"></span></span><br>
<br>
<b>CGIの問題点<br></b>
<ul>
<li>処理要求のたびにプログラムが起動されること</li>
<li>セッション管理がない</li>
<li>
ページの生成ロジックとビジネスロジックを分離するのが困難<br>
</li>
</ul>
→処理要求が多いときのパフォーマンス劣化やトランザクション管理の難しさにつながる<br>
<br>
→JSP・Servletが登場<br>
<ul>
<li>
JSP・Servletはマルチスレッドで実行され、実行基盤であるwebコンテナは勝手にセッション管理を行ってくれる。</li>
<li>
JSPページで生成を行いビジネスロジックをServletで行える</li>
</ul>
<br>
<hr size="2" width="100%">
<b>EJB(Enterprise JavaBeans)の登場と衰退<br></b> EJBコンテナによってできること<br>
<ul>
<li>
分散して存在するEJBコンポーネントをあたかも同一マシン上に存在しているかのようにアクセスする</li>
<li>
分散して存在するデータベースのトランザクションをあたかも1つのDBしかないようにトランザクション制御する。</li>
</ul>
EJBはもともと分散環境の為のコンポーネントとして登場した。だからJSPやServletといったWebアプリケーションのための技術ではなかった。<br>
で、EJBはいつのまにか「再利用可能なコンポーネント」とか「SQLの記述が不要なDBアクセスフレームワーク」になってしまった。。<br>
<br>
前回のEJBの問題点プラスこんな問題点も。<br>
<ul>
<li>
EJBはもともと分散用のコンポーネントなのでリモートアクセスしかない→Webアプリケーションでは分散処理はめったにつかわないからローカルアクセスがしたくなる</li>
<li>EJBコンテナに依存しているEJBはテストがしにくい</li>
</ul>
でももうちょっとしたらEJB3.0が登場する。<br>
「SQLの記述が不要なDBアクセスフレームワーク」に近いものとして再登場。<br>
<hr size="2" width="100%">
<b>DIコンテナ<br></b>アプリケーションが自らnewしなくてもアプリケーションが必要なobjをコンテナが勝手にobjのプロパティまで設定してくれた状態でアプリケーションに設定してくれる。<br>
<br>
J2EEはちょっと重過ぎる→軽量コンテナの登場<br>
<span style="color: rgb(51, 102, 255);">軽量コンテナとは</span><br>
<b><span style=
"color: rgb(0, 204, 204);">POJO(PlainOldJavaObject)</span></b>と呼ばれる普通のオブジェクトのライフサイクルの管理や、オブジェクト間の依存関係の解決を行うアーキテクチャを実装したコンテナ。<br>
<br>
<span style=
"color: rgb(255, 153, 255);">代表的な軽量コンテナ<br></span>
<ul>
<li>Spring</li>
<li>PicoContainer</li>
<li>Seasar</li>
<li>HiveMind</li>
</ul>
など。<br>
<br>
<span style="color: rgb(255, 102, 0);">軽量コンテナ</span><br>
IoC(Inversion of Control)<br>
「制御の逆転」<br>
「ハリウッド原則」<br>
→IoCからDIコンテナに言い換えられるようになる。<br>
<br>
DIコンテナの基本的な機能<br>
<ul>
<li>
オブジェクトのインスタンス生成や、Singletonオブジェクトとしての提供などライフサイクル管理機能</li>
<li>オブジェクト間の関連の制御を行う機能</li>
<li>
JavaコードやXMLなどで定義された設定コードを読み込みオブジェクトのライフサイクル管理や、オブジェクト間の関連を解決する機能<br>
</li>
</ul>
<b>Singleton:</b><i>アプリケーション全体で、唯一のオブジェクトを生成するパターンを意味します。</i><br>
<hr size="2" width="100%">
<b>Aspect Injection<br></b>Springのような高機能DIコンテナは宣言的に横断的な関心ごと(ログ出力や例外処理など)をPOJOに対して注入することができる。←Aspect Injection(AI)<br>
<br>
アスペクト指向<br>
子供(Object)<br>
特殊なプレート(Aspect)<br>
お母さん(DIコンテナ)<br>
<br>
子供は遊ぶことが仕事、宿題はしたくない。<br>
なのでお母さんのおなかの中にいる子供の脳に特殊なプレートを転送して埋め込む。<br>
埋め込まれた子供は「あそぼー」のメッセージを受け取ると脳に仕込まれた特殊なプレートが動き出し、そのプレートから触角状の手がでてきて宿題をはじめる。<br>
おわるとなにごともなかったかのように子供はあそびに出かける。<br>
<br>
AIとはお腹の中の子供に特殊なプレートを埋め込むこと。<br>
<hr size="2" width="100%">
<b>EJBの後継として<br></b>高機能DIコンテナはEJBの利点である宣言的なトランザクション管理をAIを利用することによってPOJOで実現することが可能。<br>
DBアクセスはO/Rマッピングフレームワークを利用すればよい。<br>
<br>
<u><span style=
"color: rgb(0, 153, 0);">EJBのかわりにDIコンテナを利用する最大の理由<br>
</span></u><span style="color: rgb(0, 153, 0);"><span style=
"color: rgb(0, 0, 0);">DIコンテナに載せることが可能なオブジェクトがPOJOと言われる普通のJavaオブジェクトということ。<br>
EJBコンテナに依存したEJBコンポーネントはユニットテストが行いにくいなどの問題点あり。<br>
<br>
DIコンテナに管理されているPOJOはDIコンテナに依存してないから単体テストがしやすい。<br>
<br style="color: rgb(51, 51, 255);"></span></span><br>
<br>
表示オプション
横に並べて表示:
変化行の前後のみ表示: