Spring入門
―より良いWebアプリケーションの設計と実装

[表紙]Spring入門 ―より良いWebアプリケーションの設計と実装

紙版発売

B5変形判/336ページ

定価3,278円(本体2,980円+税10%)

ISBN 4-7741-2341-2

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Javaを使ったWebアプリケーションの開発は転換期に来ています。より軽量で構造がシンプルな設計をしようという機運が高まっているからです。

1つのソリューションは,SpringFrameworkに代表される軽量コンテナの利用です。本書はさまざまな面からこの新技術を紹介します。

こんな方におすすめ

  • EJBの使用に疑問と限界を感じているJavaプログラマー

著者の一言

Webアプリケーションの仕事に携わる中で,僕はJ2EEの複雑化や肥大化に対応できるWebアプリケーション開発の「切り札」となるものを探していた。そこで,見つけたのがSpring(Spring Framework)というJava/Webアプリケーション用のフレームワークだ!

目次

第1章 Webアプリケーション概論

  • 1.1 SpringとWebアプリケーション
  • 1.2 Webアプリケーションとは何か?
    • 1.2.1 JSP,Servletの登場
    • 1.2.2 EJBの登場と衰退
    • 1.2.3 軽量コンテナの登場
    •  1.2.3.1 DIコンテナ
    •  1.2.3.2 Aspect Injection(アスペクトの注入)
    •  1.2.3.3 EJBの後継として
  • 1.3 アプリケーションアーキテクチャ
    • 1.3.1 アプリケーションアーキテクチャの必要性
    •  1.3.1.2 システム開発の目標
    •  1.3.1.3 開発効率とアプリケーションアーキテクチャの必要性
    •  1.3.1.4 システムのライフサイクルとアプリケーションアーキテクチャの必要性
    • 1.3.2 レイヤ
    • 1.3.3 凹型レイヤ
  • 1.4 プレゼンテーション層の役割
    • 1.4.1 MVC2とは何か?
    • 1.4.2 MVCフレームワークの種類
    • 1.4.3 画面の設計指針
    • 1.4.4 JSPの配置
    • 1.4.5 アプリケーションコントローラの設計指針
    •  1.4.5.1 入力データの変換
    •  1.4.5.2 入力データの検証
    •  1.4.5.3 サービスロジックの分離
  • 1.5 ビジネス層の役割
    • 1.5.1 ドメイン,エンティティ,ValueObject
    • 1.5.2 ビジネス層のパターン
    •  1.5.2.1 サービス優先
    •  1.5.2.2 ドメイン優先
    • 1.5.3 トランザクション管理(ACID属性はご存じですか)
    •  1.5.3.1 宣言的なトランザクション
    •  1.5.3.2 明示的なトランザクション
  • 1.6 データアクセス層の役割
    • 1.6.1 O/Rマッピング
    • 1.6.2 DBアクセスフレームワークの種類
    • 1.6.3 データアクセス層の設計指針
    •  1.6.3.1 ビジネス層とデータアクセス層の分離
  • 1.7 Spring概要
    • 1.7.1 Spring Frameworkとは何か?
    • 1.7.2 Springと凹型レイヤ
    • 1.7.3 すべての層で利用可能なDIコンテナとAOP
    •  1.7.3.1 SpringのDIコンテナ
    •  1.7.3.2 SpringのAOP(アスペクト指向プログラミング)
    • 1.7.4 プレゼンテーション層
    •  1.7.4.1 SpringMVCフレームワーク
    •  1.7.4.2 SpringWebインテグレーション機能
    • 1.7.5 ビジネス層
    •  1.7.5.1 DIコンテナとサービス,ドメイン
    •  1.7.5.2 AOPとトランザクション管理
    • 1.7.6 データアクセス層
    •  1.7.6.1 SpringのJDBC抽象化フレームワーク
    •  1.7.6.2 Spring ORMインテグレーション機能
    • 1.7.7 Springとユニットテスト

第2章 Springの導入

  • 2.1 開発環境
  • 2.2 Tomcat Plugin
    • 2.2.1 インストール
    • 2.2.2 初期設定
    • 2.2.3 使用方法
    • 2.3 Spring IDE
    • 2.3.1 インストール
    • 2.3.2 使用方法
  • 2.4 Springの導入

第3章 DIコンテナ

  • 3.1 Beanファクトリ
    • 3.1.1 ライフサイクル管理
    • 3.1.2 Bean定義ファイル
    •  3.1.2.1 beanタグ
    •  3.1.2.2 依存関係の設定例
    •  3.1.2.3 Bean定義ファイルの分割
    •  3.1.2.4 プロパティファイルの利用
    • 3.1.3 リフレクションの問題
    • 3.1.4 シングルトン(Singleton)
  • 3.2 Applicationコンテキスト
    • 3.2.1 Bean定義ファイルの読込み
    • 3.2.2 メッセージソース
    • 3.2.3 イベント処理
  • 3.3 Springのロギング
  • 3.4 Beanファクトリを使ってみよう
    • 3.4.1 オブジェクトの生成
  • 3.5 Beanファクトリオブジェクトの関連の設定
  • 3.6 Beanファクトリインタフェースベースの設計をしよう

第4章 アスペクト指向プログラミング――AOP(Aspect Oriented Programming)

  • 4.1 Spring AOPフレームワーク
    • 4.1.1 DIコンテナが解決するものは何か?
    • 4.1.2 アスペクト指向プログラミングの位置付け
    • 4.1.3 アスペクト指向プログラミングとは何か?
    • 4.1.4 AOPの用語
  • 4.2 AOPフレームワークの今
    • 4.2.1 AspectJとは何か?
    • 4.2.2 バイトコードレベルでアスペクトを織り込むタイプ
    •  4.2.2.1 AspectWerkz
    •  4.2.2.2 JAC(Java Aspect Components)
    •  4.2.2.3 JBossAOP
    • 4.2.3 Proxyを利用してアスペクトを織り込むタイプ
  • 4.3 SpringAOP
    • 4.3.1 4つのAdvice
    •  4.3.1.1 Around Advice
    •  4.3.1.2 Before Advice
    •  4.3.1.3 Throw Advice
    •  4.3.1.4 After Returning Advice
    • 4.3.2 Introduction
    •  4.3.2.1 Adviceの一覧
    • 4.3.3 AOPを適用する範囲を指定する Pointcut
    • 4.3.4 Advisor
    • 4.3.5 AOP Proxy
    • 4.3.6 DIコンテナを利用したSpringAOP
    • 4.3.7 Auto Proxy
    • 4.3.8 カッコウの卵

第5章 DBアクセスとトランザクション

  • 5.1 JDBCを使用したデータベースアクセスの問題点とJDBC抽象フレームワーク
  • 5.2 コールバックパターン
  • 5.3 JDBC抽象フレームワークにおけるコールバック実装
    • 5.3.1 JdbcTemplate
    • 5.3.2 JDBC抽象フレームワークのCallbackインタフェース
    •  5.3.2.1 Statementに対して処理を行うもの
    •  5.3.2.2 ResultSetに対して処理を行うもの
    • 5.3.3 JdbcTemplateの使用方法
  • 5.4 JDBC抽象フレームワークを使用したDAO設計
    • 5.4.1 検索処理RDBMSオペレーションクラス
    •  5.4.1.1 RDBMSオペレーションクラス 一覧結果を返す検索処理
    •  5.4.1.2 1つの検索結果を返すRDBMSオペレーションクラス
    • 5.4.2 更新処理RDBMSオペレーションクラス
    • 5.4.3 DAOの作成
    • 5.4.4 DIコンテナへの登録(DataSourceの設定)
  • 5.5 汎用データベースアクセス例外
    • 5.6 トランザクション制御
    • 5.6.1 従来のトランザクション実装方式
    • 5.6.2 Springで提供されるトランザクション制御の仕組み
    • 5.6.3 PlatformTransactionManagerを使用したトランザクション管理
    •  5.6.3.1 DataSourceTransactionManager
    •  5.6.3.2 ThreadLocalとDataSourceUtils
    •  5.6.3.3 JDBC抽象フレームワークとDataSourceUtils
    • 5.6.4 AOPフレームワークを利用した宣言的トランザクション
    •  5.6.4.1 TransactionProxyFactoryBean
    •  5.6.4.2 トランザクション定義情報の設定
    •  5.6.4.3 DIコンテナとTransactionProxyFactoryBean
    •  5.6.4.4 AutoProxyの利用
    • 5.6.5 JTAの利用
    • 5.6.6 JOTMの導入
  • 5.7 DAOのテスト
    • 5.7.1 DbUnitとは
    • 5.7.2 テストデータを用意する
    • 5.7.3 テストクラスを用意する
  • 5.8 DBアクセスとトランザクションのまとめ

第6章 MVCフレームワーク

  • 6.1 SpringMVCのアーキテクチャ
    • 6.1.1 SpringMVCのDIコンテナ
    • 6.1.2 SpringMVCのコントローラの仕組み
  • 6.2 SpringMVCの基本的な制御フロー
  • 6.3 サンプルアプリケーション−参加受付サイト
  • 6.4 コントローラサーブレット
    • 6.4.1 DispatcherServlet
    • 6.4.2 Bean定義ファイル
  • 6.5 Mapping Definitions
    • 6.5.1 HandlerMapping
    •  6.5.1.1 BeanNameUrlHandlerMapping
    •  6.5.1.2 SimpleUrlHandlerMapping
    • 6.5.2 ViewResolver
    •  6.5.2.1 InternalResourceViewResolver
    •  6.5.2.2 ResourceBundleViewResolver
    • 6.5.3 View
    • 6.5.4 HandlerExceptionResolver
    •  6.5.4.1 SimpleMappingExceptionResolver
  • 6.6 Controller Definitions
    • 6.6.1 Controller
    • 6.6.2 AbstractController
    • 6.6.3 MultiActionController
    •  6.6.3.1 MethodNameResolver
    • 6.6.4 SimpleFormController
    •  6.6.4.1 メソッドprocessFormSubmission
    •  6.6.4.2 メソッドformBackingObject
    •  6.6.4.3 メソッドinitBinder
    •  6.6.4.4 メソッドonSubmit
    •  6.6.4.5 メソッドreferenceData
    • 6.6.5 Validator
    • 6.6.6 JSTLとSpring Tag Library
    • 6.6.7 HandlerInterceptor
  • 6.7 General Definitions
    • 6.7.1 MessageSource
    • 6.7.2 Filter
  • 6.8 リクエストコントローラの単体テスト
  • 6.9 SpringMVCのまとめ

第7章 Strutsとの連携

  • 7.1 Strutsの概要
  • 7.2 Strutsの課題
  • 7.3 Struts+Spring連携の目的
  • 7.4 Struts+Spring連携
    • 7.4.1 サンプルアプリケーションの説明
    • 7.4.2 DelegatingActionProxyの使用
    • 7.4.3 ActionSupportの利用
    • 7.4.4 DelegatingActionProxyとActionSupport
  • 7.5 Struts+Spring連携のまとめ

第8章 Hibernateとの連携

  • 8.1 Hibernateとは何か?
    • 8.1.1 Hibernateの機能
    •  8.1.1.1 HQL(Hibernate Query Language)
    •  8.1.1.2 プライマリキーの生成
    •  8.1.1.3 エンティティの関連
    •  8.1.1.4 遅延ロード
    •  8.1.1.5 キャッシュ
    • 8.1.2 Hibernateの課題
    • 8.1.3 Spring+Hibernate連携の目的
  • 8.2 Spring+Hibernateの連携
    • 8.2.1 連携前のコード
    • 8.2.2 インテグレーション機能によるHibernate連携
    •  8.2.2.1 定義ファイルの設定
    • 8.2.3 ソースコードの修正
  • 8.3 Spring+Hibernateのトランザクションに関わる落とし穴
    • 8.3.1 重複したPKをどう扱うか
    • 8.3.2 例外をキャッチする

第9章 iBATISとの連携

  • 9.1 SpringとiBATISとのインテグレーションの必要性
  • 9.2 iBATISとは何か?
  • 9.3 iBATISの機能
    • 9.3.1 名前付きバインド変数
    • 9.3.2 SQLを動的に組み立てる
    • 9.3.3 プライマリキーの生成
    • 9.3.4 遅延ロード・キャッシュ
  • 9.4 Spring+iBATISの連携
    • 9.4.1 連携前のSpringJDBC抽象フレームワークでのコード
  • 9.5 インテグレーション機能によるiBATIS連携
    • 9.5.1 定義ファイルの設定
    • 9.5.2 ソースコードの修正

著者プロフィール

長谷川裕一(はせがわゆういち)

1986年,イリノイ州警察指紋システムのアセンブリ言語プログラマからスタートし,金融や流通などのさまざまなプロジェクトを経験。PL,PMとキャリアを重ね,現在は合同会社Starlight&Stormを起業して,オブジェクト指向/Javaを中心に技術コンサルティングやプロジェクトマネージメント支援,エンジニア教育を中心に活動中。

株式会社フルネス取締役,日本Springユーザ会会長。