Spring 5でできることは?4からの変更点や互換性について解説
この記事は「Javaで学習するSpringによるWebアプリ開発」というトレノキャンプのeラーニング講座を基に解説した記事です。
本記事では、Javaのオブジェクト指向習得者を対象に「WEBアプリケーション開発の全体像を短期間で効率的に把握する」ため、Springというフレームワークを題材としてWEBシステム開発の基本を解説していきます。
まずは、このSpringというフレームワークについて簡単に解説した後に、「問い合わせアプリ」とはどういったものなのかということを、実際のアプリケーションを通して確認していきましょう。(本記事で取り上げるサンプルプログラムは、コースを受講していただくと無料で閲覧可能です)
1.Spring Frameworkとは
こちらの画像はSpring公式ページのキャプチャーです。
この画像を見るだけでも、Springがさまざまなプロジェクトにわかれているということが分かります。
例えば、プログラミング言語「Ruby」では、「Ruby on Rails」というフレームワークがあり、その中に必要なものすべてが揃っているのに対して、Springは上記のようなプロジェクトの集合体であり、それらのうちのどれを使うか、といったように都度必要なライブラリを選択していく必要があります。
以上のことから、今回用いるSpringは非常に柔軟性の高いフレームワークであると言えます。
2.主要なフレームワークの紹介
それでは、各種あるフレームワークの中から、主要なものを選んで紹介していきます。
①Spring Boot
Spring Bootは昨今のSpringにおける開発ではほぼ必須のフレームワークとなっています。
こちらを用いることで、複雑な手順や設定などをすることなくSpringプロジェクトを作成できます。
つまり、このSpring Bootによって、その他の各種フレームワーク同士を結び付けて連動させるということが可能となります。
→関連リンク:【5分でわかる】Spring Boot超入門! 特徴やできること、Spring Frameworkとの違いなどをわかりやすく解説
②Spring Framework
一般的に「WEBアプリ製作のSpring」と言う場合は、このSpring Frameworkのことを指します。
こちらのフレームワークではMVCなどのコアな機能の提供を行っています。
→関連リンク:Spring Framework 入門! 特徴やbootとの違い、ダウンロードからインストールまでをわかりやすく解説
③Spring Data
Spring DataはO/Rマッピングの自動化など、データベース操作を簡素化するためのフレームワークです。
④Spring Security
Spring Securityは名前のとおり、ログイン認証やCSRF対策など、セキュリティ対策の機能を提供しているものです。
CSRFとは「クロスサイトリクエストフォージェリ」の略で、WEBアプリケーションの脆弱性を利用したサイバー攻撃の一種です。
→関連リンク:【5分でわかる】Spring Securityの概要や認証機能、仕組みなどわかりやすく解説
以上のように、必要なフレームワークを各種組み合わせていくのがSpringにおける開発であると言えます。
トレノキャンプのe-ラーニング講座では、その他にもThymeleafというテンプレートエンジンや、Gradleというビルドツールなど、実際の開発現場に合わせた環境を用意しておりますので、この機会に、これからJavaを使われる方、設計を担当する方など、是非ともチャレンジをしていただきたいと思います。
3.本記事のねらい
それでは先に、本記事のねらいを説明します。
まずは、「MVCを利用して保守性の高いコードがかける」ということ、そして、「DAOパターンを利用してデータベース操作ができる」ということ、最後に、「実践力を身につけることができる」という三点を目標とします。
①本記事で作成するアプリについて
こちらが完成後のアプリ、問い合わせフォームの画面です。
「お名前」、「メール」、そして本文である「Inquiry」の入力欄があり、これらを合わせてひとつの問い合わせを構成します。
それでは、これからどのような機能をつくっていくのか考えながら、処理を確認しましょう。
例えば、名前の部分に長すぎる文字が入力された場合や、メールアドレスの欄にメールアドレスの形式でないものが入力された場合に、「確認する」というボタンを押してみるとこのようにチェックがかかり、エラーメッセージが表示されるようになっています。
ここで重要ポイントです。こうしたチェック機能のことを、「バリデーション」と呼びます。
チェックというと、フレームワークなしの実装で考えた場合に、if文などで条件分岐をコツコツ書いていくといったイメージを持つ方もいらっしゃるかもしれませんが、Springでは「アノテーション」というものを用いることで、こういった機能を簡単に実現できるようになっています。アノテーションについて詳しくは別の記事で紹介します。
では、今度は正しい値を入力していきます。
例として、名前は「test」、メールはメールアドレスの形式にならったものを入れていきます。内容も適当に入力し、確認ボタンを押します。
すると、確認ページが表示されます。
この画面は、実際にデータを登録する前に、内容に誤りがないかを再度確認するためのページとなっています。
このページ上には、チェックして問題がなかった場合に選択する「送信する」ボタンのほかに、内容を修正するために再度編集画面に戻るための「戻る」ボタンがあります。
ここで「戻る」を押した場合は再度編集画面に戻りますが、この際すでに入力した値が破棄されることなくフォーム内に保持されている、という仕様がポイントになっています。
もう一度確認ページへ移動し、今度は「送信する」を押すとこのように「Completed!」というメッセージがフォーム上部に表示され、送信完了が確認できるというようになっています。
以上がこれから作成する問い合わせアプリの機能の概要となります。
本記事ではこうした仕組みを「DAOパターン」というものを用いて実現していきます。
ここで、DAOやEntity、Serviceといった役割分担の手法を学んでいき、問い合わせフォームの製作を通して、WEBアプリケーション開発の構造を把握できます。
それでは、楽しみながら進めていきましょう。
以下の索引に沿って、記事をご覧ください。
第1章 Springを扱うためのJava知識
Springを学ぶ前に知っておくべきJavaの知識について紹介します。
オブジェクト(Entity)の構成や、Entityクラスの実装方法を学びましょう。
Serviceクラス、インターフェースがどんなものなのか、またその実装方法を見てみましょう。
Javaのメモリ「ヒープ領域」と「スタック領域」についても解説します。
メソッドと引数について、問題に取り組みながら学びます。
作成したインターフェースとServiceクラスを使用して、メソッドの追加を行ってみましょう。
「シングルトン」とは何なのか、インスタンスの化の仕組みについて掘り下げながら紹介します。
実装方法も確認しましょう。
第2章 Springの基本
以降アプリ制作を行うにあたって、Springを使う環境を作っていきましょう。
Gradleプロジェクトのインポート方法、プロジェクトを確認する方法を紹介します。
制作に慣れるため、SpringのMVCアーキテクチャの体験、データのブラウザへの出力を行いましょう。
それにともなって、ビルドツールの「Gradle」や記述方法の「アノテーション」、テンプレートエンジンの「Thymeleaf」についても解説していきます。
手順に沿ってデータをブラウザに出力していきましょう。
アノテーションの付与、リクエストスコープが実際どのように使われているのか、Thymeleafを使う際の注意点などを確認していきます。
Springからデータベースを操作する方法について確認します。
ここでは一番シンプルな、Controllerから直接データベースへアクセスしてデータを取得する処理を見ていきましょう。
実際にデータベースを操作します。
データベースのアクセスに用いるSpringJDBCクラスの使われ方を確認しましょう。
第3章 お問い合わせアプリ開発
まずはこれから作成していくフォームの構成を確認してから、
フォームの作成に必要なHTMLファイル、Formクラスの作成方法を見ていきましょう。
HTMLファイル、Formクラスの編集を行いながらフォームを完成させましょう。
フォームで入力したデータを次のページに渡す方法を学び、確認ページを作ります。
hiddenタグを用いた作成方法、バリデーションの行い方を学びましょう。
実際に確認ページの作成を行っていきましょう。
HTMLの編集、バリデーションを含めた確認処理の実装を行います。
リダイレクト、フラッシュスコープなどの完了処理を作っていきます。
それぞれの作成方法、リダイレクトの仕組みについても確認しておきましょう。
実際にControllerに追加記述をして、リダイレクト、フラッシュスコープの実装を行います。
HTMLとの対応も確認しましょう。