Spring3入門 ―Javaフレームワーク・より良い設計とアーキテクチャ

著者
長谷川裕一はせがわゆういち大野渉おおのわたる土岐孝平ときこうへい 著
定価
4,290円(本体3,900円+税10%)
発売日
2012.11.2[在庫なし]
判型
B5変形
頁数
512ページ
ISBN
978-4-7741-5380-3

概要

もはや定番となったJava・オープンソースフレームワークのSpring Frameworkの実践的な入門書。これまでに、Spring入門、Spring2.0入門と発行してきたが、本書は機能の洗練と成熟がされた唯一無二のSpring3.1の解説書籍である。これまでの2冊の集大成ともいえる内容となり、DIコンテナといった概念もより精査されてソフトウェアアーキテクチャへの言及と実践ががより深いものになっている。Javaによるアプリケーション開発を極めよ!

ナビゲーション

【第1章 Spring とWeb アプリケーションの概要】

Springの歴史や現在のプロダクトに触れた後、Webアプリケーションについての基礎知識を確認してDIやAOPを用いたアプリケーションアーキテクチャはどのようなものかを解説しよう。Springの詳しい説明はないが、Springを適切に使うための重要な情報が詰まっているので、初級者の人は読み飛ばさないでほしい。

【第2章 Spring のDI】

Springを使いこなすには、Springの核であるDIを理解することが必須である。この章では、DIとは何か?から始まり、SpringのDIの使い方や、SpringのDIコンテナが持つ機能について解説する。Bean定義ファイルやアノテーションを使ったDIの方法は後述の章で頻繁に出てくるのでしっかりと抑えよう。

【第3章 Spring のAOP】

AOP(アスペクト指向プログラミング)は、DIと同じようにSpringの基盤となっている技術である。この章では、AOPの概念を解説した後、SpringのAOPの使い方を解説しよう。DIとAOPを組み合わせることで、DI単体の場合と比べて、より優れた関心事の分離を行え、オブジェクト指向とアスペクト指向が相補的な関係にあることが明らかになるはずだ。

【第4章 データアクセス層の設計と実装】

データアクセスの処理では、リソースの取得・破棄や例外のハンドリングといった冗長な処理が発生しやすい。この章では、データアクセス層の役割を確認した後、従来のJDBCを使用したデータアクセスの問題点と、Springが備えるSpring JDBCの利点、および使用法について解説しよう。冗長な処理を排除できることが分かるはずだ。

【第5章 ビジネスロジック層の設計と実装】

ビジネスロジック層をシンプルにするには、ビジネスロジックとトランザクション処理を分離することが重要だ。この章では、Springが提供するトランザクション機能を解説しながら、ビジネスロジック層の適切な作りを一緒に考えていこう。

【第6章 プレゼンテーション層の設計と実装 - Spring Web MVC 編】

Springバージョン2.5からアノテーションを導入し飛躍的に使い易くなったSpring Web MVC。この章では、Spring Web MVCの機能をサンプルアプリケーションを使いながら解説しよう。プレゼンテーション層のさまざまな課題がスマートに解決できることを実感できるはずだ。

【第7章 プレゼンテーション層の設計と実装 - Spring Web Flow 編】

Spring Web Flowは、Springのサブプロジェクトとして開発されているWeb MVCフレームワークだ。Spring Web MVCとはまた異なる特徴を持ったフレームワークであり、特にWebアプリケーションのフローを効率よく実装できるのが特徴だ。ぜひSpring Web MVCと比較しながら、Spring Web Flowを導入するメリットを感じてほしい。

【第8章 Struts1とSpring の連携】

8章から13章までは、Springと他のフレームワークとの連携について解説しよう。この章では、MVCフレームワークとしてもっとも普及が進んでいるStruts1とSpringの連携について解説する。Struts1を単体で利用するよりも、Springと連携させることで、よりすり優れたアプリケーションアーキテクチャを実現できることが明らかになるはずだ。

【第9章 Struts2 とSpring の連携】

Struts1をそろそろ卒業したいと思ってる読者は、Struts1の後継であるStruts2に期待を寄せていることだろう。この章では、Struts2の使い方を解説した後、Springとの連携方法について解説する。Struts1から生まれ変わったStruts2の変貌ぶりに驚く読者は多いはずだ。

【第10章 Hibernate とSpring の連携】

SQLを使わないO/Rマッピングフレームワークとして有名なHibernate。そのHibernateとSpringを連携させてデータアクセスを行う方法について説明しよう。何かと良い面ばかりを取り上げられるSpring + Hibernateだが、落とし穴だってあることに気がついてほしい。

【第11章 JPA とSpring の連携】

Java EEの一部であるJPAは、O/Rマッピングフレームワークの標準APIとして今後も普及していくことが予想される。この章では、JPAの概要とSpringとの連携方法について解説しよう。遅延ロード問題の解決方法についても触れているので、JPAの導入を検討している読者はぜひ参考にしてほしい。

【第12章 MyBatis2.x とSpring の連携】

iBATISの名でも知られるMyBatis2.xは、SQLが書けるO/Rマッピングフレームワークとして人気のフレームワークだ。この章では、MyBatis2.xの基本的な解説をした後、Springとの連携方法と、連携のメリットについて解説しよう。

【第13章 MyBatis3.x とSpring の連携】

MyBatis2.xを使ったことがある読書は多いと思うが、最新バージョンのMyBatis3.xを使ってみたいという読書も多いはずだ。この章では、MyBatis3.xの使い方と、Springとの連携方法について解説する。この章を読めば、MyBatis2.xからパワーアップしたMyBatis3.xを知って、MyBatis3.xを導入したい意欲が湧くだろう。

【付録A Spring Tool Suite のインストール】

機能の説明がいくらよくても、実際に試してみないことには実感することができない。この付録では、Springベースの開発に有効なIDEであるSpring Tool Suite(SpringSourceが開発したEclipseベースのIDE)のインストール手順や、Mavenを使ったプロジェクトの作成について解説する。また、本書のサンプルソースコードをプロジェクトとしてインポートする方法も解説するので、本書を読むだけではなく手も動かしてSpringの良さを感じてほしい。

【付録B Spring3.0 以降の新機能】

Springのメジャーバージョンが3.0になって以降、さまざまな機能が追加されたのだが、本書で紹介できなかった新機能も多い。この付録では、プロファイル機能やキャッシュ抽象機能など、注目すべき新機能をいくつかピックアップして解説しよう。

【付録C 動作確認に使用したライブラリについて】

本書に掲載しているサンプルソースコードを実際に動かしたい読書は、この付録を参照して必要なライブラリを入手してほしい。ライブラリは、付録の情報に従ってMavenの依存ライブラリを設定すれば簡単に入手できる。依存ライブラリの設定方法は付録Aで解説しているので参考にしよう。

では、早速、本文に入っていこう。できればいつでも手を動かして内容を確かめられるように、マシンを立ち上げてIDEを起動しておこう!

こんな方にオススメ

  • Javaのエンジニア
  • Web開発者、アプリケーションエンジニアなど
  • Javaを愛し、その力をあますことなく活用したいエンジニアの皆さんに

目次

第1章 SpringとWebアプリケーションの概要

  • 1.1 最新のSpring事情
  • 1.2 Springのプロダクト
  • 1.3 SpringとWebアプリケーション
  • 1.4 Webアプリケーションとは?
  • 1.5 アプリケーションアーキテクチャ
  • 1.6 プレゼンテーション層の役割
  • 1.7 ビジネスロジック層の役割
  • 1.8 データアクセス層の役割
  • 1.9 Webアプリケーションの抱える問題
  • 1.10 Springの概要

第2章 SpringのDI

  • 2.1 DIとは何か
  • 2.2 DIの使いどころ
  • 2.3 アノテーションを使ったDI
  • 2.4 Bean定義ファイルでDI

第3章 SpringのAOP

  • 3.1 DIxAOPコンテナ
  • 3.2 AOPとは何か
  • 3.3 Springが提供するAdvice
  • 3.4 Proxyを利用したAOP
  • 3.5 AOPの使いどころ
  • 3.6 SpringAOP

第4章 データアクセス層の設計と実装

  • 4.1 データアクセス層の役割
  • 4.2 SpringJDBC
  • 4.3 汎用データアクセス例外
  • 4.4 データソース
  • 4.5 まとめ

第5章 ビジネスロジック層の設計と実装

  • 5.1 Webアプリケーションのトランザクション
  • 5.2 トランザクションマネージャ
  • 5.3 トランザクション機能の使い方
  • 5.4 まとめ

第6章 プレゼンテーション層の設計と実装――Spring Web MVC編

  • 6.1 Spring MVCの概要
  • 6.2 環境作成
  • 6.3 サンプルアプリケーションの概要
  • 6.4 画面を表示するController
  • 6.5 入力値を受け取るController
  • 6.6 Spring MVCのその他の機能
  • 6.7 まとめ

第7章 プレゼンテーション層の設計と実装――Spring Web Flow編

  • 7.1 Spring Web Flowの概要
  • 7.2 Spring Web FlowのState
  • 7.3 Spring Web FlowとEL
  • 7.4 Spring Web Flowの初期設定
  • 7.5 簡単なフローを導入してみる
  • 7.6 応用編
  • 7.7 まとめ

第8章 Struts1とSpring の連携

  • 8.1 本書が対象とするフレームワーク
  • 8.2 Struts1の概要
  • 8.3 サンプルアプリケーションの概要
  • 8.4 どの方法がよいのか?
  • 8.5 まとめ

第9章 Struts2とSpringの連携

  • 9.1 Struts2とは?
  • 9.2 Struts2を使用した簡単なサンプル
  • 9.3 Action
  • 9.4 Result(resultタグを使った遷移先のビューの設定)
  • 9.5 ContextMap/OGNL/Struts-Tags
  • 9.6 Interceptors
  • 9.7 Validation
  • 9.8 ExceptionMapping
  • 9.9 ゼロコンフィグレーション
  • 9.10 Struts2とSpringの連携

第10章 HibernateとSpringの連携

  • 10.1 永続化に何を使えばいいのか?
  • 10.2 Hibernateとは?
  • 10.3 Hibernateの使い方
  • 10.4 Hibernateの機能
  • 10.5 Hibernateの課題とHibernateとの連携の目的
  • 10.6 連携前のソースコード
  • 10.7 インテグレーション機能によるHibernate連携
  • 10.8 HibernateとSpringとの連携で起こるトランザクションに関わる落とし穴

第11章 JPAとSpringの連携

  • 11.1 JPAとは何か?
  • 11.2 POJOベースのドメインクラス
  • 11.3 persistence.xmlファイルの編集
  • 11.4 JPAの実行..EJBコンテナなしの場合
  • 11.5 SpringのJPAインテグレーション機能
  • 11.6 DAOクラスの実装
  • 11.7 Bean定義ファイルの設定
  • 11.8 遅延ロードの問題
  • 11.9 遅延ロードを切る?
  • 11.10 TransactionViewパターン
  • 11.11 SpringのOpen EntityManagerInViewFilter
  • 11.12 Triggering Lazy Loading
  • 11.13 Transfar Objectを使う
  • 11.14 選択
  • 11.15 まとめ

第12章 MyBatis2.xとSpringの連携

  • 12.1 SpringとMyBatis2.xとのインテグレーションの必要性
  • 12.2 MyBatis2.xとは何か?
  • 12.3 簡単なサンプル
  • 12.4 MyBatis2.xの機能
  • 12.5 MyBatis2.xとSpringの連携
  • 12.6 まとめ

第13章 MyBatis3.xとSpringの連携

  • 13.1 MyBatis3.xとは何か?
  • 13.2 MyBatis3.xの主な構成物
  • 13.3 MyBatis設定ファイル
  • 13.4 マッピングファイル
  • 13.5 Mapperインタフェース
  • 13.6 Statement Builder
  • 13.7 トランザクション処理
  • 13.8 MyBatis3.xとSpringの連携
  • 13.9 まとめ

付録A SpringSuiteのインストール

  • A.1 STSのインストール
  • A.2 プロジェクトの新規作成と設定
  • A.3 プロジェクトのインポート

付録B Spring3.0以降の新機能

  • B.1 Bean定義のプロファイル機能
  • B.2 Object/XMLマッピング連携
  • B.3 RESTクライアント
  • B.4 Cache Abstraction(キャッシュ抽象)機能
  • B.5 アノテーションによる非同期実行/スケジューリング実行
  • B.6 組み込みデータベースサポート

付録C 動作確認に使用したライブラリについて

プロフィール

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

1964年東京生まれ。自分達らしい仕事を目指して2007年10月に独立しStarlight&Storm LLCを興しました。世の中、理不尽なことも多いですが、僕達はエンジニアの信念に従って理不尽なことははねのけて、これからも仕事を続けてゆく所存です。さて、もちろん仕事は大事ですが、今後の夢は前作と変わらず、子供達と一緒に格闘技ジムを開くこと。資金を貯めるためにも頑張ってます(^^)


合同会社Starlight&Storm

近年のシステム開発は、登山にたとえるなら、新しい技術(オープン)で、巨大(大規模・分散)で困難(ミッションクリティカル)な山(システム)を短期間(短納期)で登ろう(開発)とするものです。しかし、多くの登山隊(開発プロジェクト)は、ハイキングしかやったことのない人間を集め、登山計画をたて、その山に挑みます。それが、どんなに無謀で危険なものかは、登山をしたことのない人にも分かっていただけるでしょう。
山岳ガイドは、自らの優れた技術や知識と豊富な経験をもとに、お客様の訓練をし、お客様のスキルを補いながら、お客様を巨大で困難な山の頂へと安全に導き、お客様の喜びを自らの喜びとする登山のエキスパートです。
Starlight&Stormは、山岳ガイドと同様の技量と志をもった、オブジェクト指向によるシステム開発を成功へと導く、優秀なITのガイド達が集う、2009年に設立された会社です。

ホームページ:Starlight&Storm LLC

大野渉おおのわたる

1976年富山県高岡市生まれ。2008年に結婚し、東京の板橋から横浜の綱島へ移り住む。現在はStarlight & Stormのメンバーとして、主に研修講師や技術支援を担当する。最近はさらにSpringに携わる仕事が多くなってきたが、前著Spring2.0入門以降のSpringの進化、特にプレゼンテーション層周りの充実度には目を見張るばかりである。ふとしたきっかけで購入したiPhoneの影響でAppleに魅せられ、現在の仕事環境は完全にMacへ移行。不自由なWin○○○s環境から脱却し、Macの快適な仕事環境にとても満足している。

土岐孝平ときこうへい

1976年宮崎生まれ。大学で情報工学を専攻したにも関わらず、卒業後某カジュアルショップの販売員になる。次の年に上京しIT業界へ。非効率な開発現場に多々遭遇する中、教育やコンサルティングの重要性を痛感し、現在はJava関連の教育やコンサルティングに従事する。家で作業することが多く、テレビなどのさまざまな誘惑と日々奮闘している。