プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Spring Framework
  • 【Spring Framework】10年以上に渡る歴史や、関連プロジェクトについて。
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Spring Framework】10年以上に渡る歴史や、関連プロジェクトについて。

05.06

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

Spring Frameworkの歴史

バージョン リリース日 説明
1.0 2004年
1.2 2005年  AOP、XMLベースのBean定義、フレームワークモジュールの疎結合、トランザクション管理、データアクセス等の基本機能
2.0 2006年 「Spring Security」、「Spring Web Flow」等のWebアプリに必要なプロジェクトが立ち上がった。
2.5 2007年 「アノテーションベースのDI」、「MVC」、「Spring Integration」、「Spring Batch」等のプロジェクトが立ち上がった。
 3.0 2009年 JPA2.0、Bean Validation、JavaEE6のサポート、
 4.0 2013年 Java SE8、JavaEE7の対応、WebSocket、Webメッセージングのサポート等の対応している。
 - 2014年 Spring Boot、Spring IO Platformプロジェクトが始まった。

Spring Frameworkの代表的なプロジェクト

Spring Frameworkには数多くのプロジェクトがあります。代表的なプロジェクトをご紹介します。

Spring Framework

「フレームワーク全体の名前」でもあり中核機能であることも示します。DI自体はこのコア機能があれば実装することが可能です。

Spring MVC

Springで、Webアプリケーションを開発するためのフレームワークであり、アーキテクチャパターンとしてMVCを用いています。

Spring MVCの特徴等の詳細については、下記の記事で解説しています。

【Spring Framework】Spring MVCとは?

Spring AOP

アスペクト指向プログラミングのためのフレームワークです。

AOP(アスペクト指向プログラミング)

下記のような処理は、本質的な処理ではないのに、ビジネスロジックの中に入ってきてしまったりします。

  • セキュリティ
  • ログ出力処理
  • トランザクション
  • モニタリング
  • キャッシュ処理
  • 例外ハンドリング

ただ、こうした共通的な処理は、後で修正したいといったことが発生したら、後で全てのコードで同じように直さなければなりません。

例えば、

デバッグする時に、ソースのいたるところに、「System.out.println」を埋め込む方がいますが、後でそれを手作業で全て取り除かなければなりません。すごく面倒ですよね。

AOPの指向の本質としては、そうした機能の本質的でない処理を、アプリケーションのコードから分離することです。

DIとの違いは?

DIが、「設定値の注入」とすれば、AOPは、「処理の注入」といえるでしょう。

AOPは、あらかじめ外部に用意しておいた共通的な処理を挿入したり、取り除いたりを簡単に実現できます。

AOPの実装方法は?

下記のクラスをそれぞれ用意する必要があります。

  • AOPで、処理を追加する対象となるクラス
  • AOPで、処理を追加するクラス
  • AOPの設定ファイル(設定用のクラスにすることも可能です。)

具体的な実装は下記の記事でご紹介しています。

設定ファイルでの実装

【Spring Framework】AOP(アスペクト指向プログラミング)を実装してみる。(設定ファイルから実装)

設定クラスでの実装

【Spring Framework】AOP(アスペクト指向プログラミング)を実装してみる。(設定クラスから実装)

AspectJを使う。

AOPを実現するために、Javaでは「AspectJ」というライブラリが広く使われています。Spring Frameworkでも、「AspectJ」を利用してAOPを実現する機能も実装されています。

メリット

「AspectJ」を使うと、普通にAOPを実装するよりも簡単に記述することができます。是非導入しましょう。

具体的な実装方法については、下記の記事で詳しく解説しています。

【Spring Framework】AOP(アスペクト指向プログラミング)を「AspectJ」で実装してみる。

Spring Security

「認証」と「認可」等のセキュリティ要件を容易に実現するためのフレームワークです。非常に多くの認証方式に対応しています。
ユーザー認証、ページごとのアクセス権設定等ができます。

Spring Web Flow

Webアプリの画面遷移を管理するフレームワークです。Spring MVCとは別フレームワークになり、画面の流れからアプリを構築できます。

Spring Data

RDBMS、NoSQL、Key-Valueストア等、数多くのデータストアへのデータアクセスを用意にするためのフレームワークです。

Spring Dataについては、下記の記事で解説しています。

【Spring Framework】Spring Dataについて

Spring Batch

バッチアプリ向けの軽量フレームワークです。

Spring Tool Suite(STS)

Springアプリを開発するために用意されたEclipseベースの統合開発環境です。Git、Maven、AspectJ等の開発に必要なソフトウェアが最初から含まれています。

STSの導入方法については下記の記事で解説しています。

【Spring Framework】Springによる開発を始めよう(STSのインストール~「Hello World」まで)

Spring IO Platform

Springで使う各種ライブラリ、サードパーティライブラリ等のバージョンを決定し、依存関係を解決するためのプロジェクトです。

Spring Boot

最小限の設定で、Springアプリを簡単に開発するためのフレームワークです。

Springは、長い歴史があるということもあり、Javaの初心者には敷居が高いですが、簡単に設定可能なので世界中で大人気のフレームワークになっています。

スポンサーリンク
  • 2018 05.06
  • miyabisan2
  • コメントを書く
  • Spring Framework
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 05.13

    【Spring Framework】AOP(アスペクト指向プログラミング)を「AspectJ」で実装してみる。

  2. 2018 05.19

    【Spring Boot】「Thymeleaf(タイムリーフ)」で画面にまとまった値を渡そう。

  3. 2018 05.19

    【Spring Boot】「Thymeleaf(タイムリーフ)」でビューを作ろう。(Hello World)

  4. 2018 05.06

    【Spring Framework】Spring MVCとは?

  5. 2018 05.19

    【Spring Boot】STSでSpring Bootプロジェクトを作ってみよう。

  6. 2018 05.13

    【Spring Framework】AOP(アスペクト指向プログラミング)を実装してみる。(設定ファイルから実装)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Maven】セントラルリポジトリについて

【Spring Framework】Spring MV…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー