新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。もう新人じゃないかも…

学習記録:Spring、今度の予定

[学習記録] Spring

参考書籍

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

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

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

Springの歴史
公開日 バージョン 特徴
2004/03 1.0 DIxAOPコンテナの原点、Bean定義ファイル時代の幕開け
2004/09 1.1 Bean定義ファイルの簡略化
2005/05 1.2 さらなる簡略化
2006/10 2.0 Bean定義ファイルがDTDからXMLに。アノテーションの登場とJPAのサポートなど多機能化
2007/11 2.5 アノテーションを強化
2009/12 3.0 アノテーションの更なる強化。ただしBean定義ファイルのファンも多い
2011 3.1 クラウド対応、Cache機能など
  • Spring(バージョン1系)が国内で頻繁に利用されるようになったのは06年頃から
    • 当時はDI・AOPの機能を中心として、StrutsHibernateと組み合わせた「SSH」構成が主流
    • 現在ではStrutsの代わりにSpring MVCを利用する方が多い
  • Bean定義ファイルの肥大化と管理の困難さ
    • バージョン2系からはアノテーションを用いてよりシンプルに
    • ただし、開発現場ではどちらを使うかの議論は続いている
Springのプロダクト
プロジェクト 概要
Spring Framework DIxAOPコンテナを中心にSpring MVCJDBCを包含するプロジェクト
Spring Security ユーザ認証・アクセス制御のためのプロダクト
Spring Web Flow 画面遷移などのイベントとフローに主眼を置いたWebアプリ開発フレームワーク
Spring Data JPAHadoop, MongoDBなどを扱うためのプロダクト
Spring Batch エンタープライズレベルのバッチ処理を実現するためのフレームワーク
Spring Tool Suite(STS) EclipseベースのSpring用統合開発環境
Groovy Java VM上で動作する動的言語
Grails Spring FrameworkHibernateなどをベースにGroovyで実装されたWebアプリ開発が可能なフルスタックフレームワーク
Roo コマンドラインからソースを自動生成するツール
tc Server Tomcatベースの、稼働中のWebアプリのモニタリングが可能なサーバ

他にもSpring Integration, Spring Social, Spring Androidなどなど

JSP, Servlet, EJB
  • CGI
    • 動的なコンテンツを生成する技術
    • HTTPのリクエストによって起動されるプログラム
    • 処理のたびにプログラムを起動する、セッション管理がないなどの問題
  • JSP, Servletの登場
    • マルチスレッドで実行され、Webコンテナは開発者に意識させることなくセッション管理を行ってくれる
    • ページの生成ロジックとビジネスロジックを分離

※現在のEJB3以降は、Spring + Hibernateと非常に似た仕様として再登場

Springの登場
  • 90年代の終わり頃、J2EEはWebアプリケーション開発には重すぎると考え始める人々
    • 重量級のJ2EEコンテナの代わりとして、(当時)軽量コンテナであるSpringが考案
    • 軽量コンテナとは、コンテナに依存しないPOJOを管理したり依存関係の解決行うコンテナのこと
      • EJBコンテナでは、その上のEJBコンポーネントEJBコンテナに依存しており、テストがしにくいなどの問題がある
      • DIxAOPコンテナでは、コンテナに管理されているPOJOはコンテナに依存しない

[今後の予定]

  • 業務を覚えたり基本情報の勉強でだいぶサボりがちだったので、これからなるべく毎日学習をするようにしたい
  • とりあえず業務で役立つであろうSpringの勉強を
  • CodeIQは毎週1問以上、AOJは毎日1問以上解いていきたい