こんにちは、STです。季節の中で心地よい春がやってきました。
桜はすでに散ってしまい、花見の時期を逃してしまいました。
そんな春にお届けするのは『Spring Boot』です。
Spring Bootとは
Javaのフレームワークに「Spring」というフレームワークがあります。
「Spring Boot」と「Spring」は別物なのでしょうか?
答えはNoです。
Spring Bootは、Springの機能とは別の全く新しいフレームワークというわけではなく、
それまでのSpringの各種フレームワークを新しい形で「統合」したものです。
フレームワークは「Spring Boot」だけ
Spring Bootは、いかに簡単に使えるアプリケーションを作るかで設計されています。
内部では様々なSpringのフレームワークが使われていますが、開発者はそれらを意識する必要がありません。
以下に Spring Boot の特徴を3つ挙げます。
XMLは書かない
Springの特徴に「xmlによる各種設計ファイル」がありますが、これらは必要な設定を整理して記述できる反面、作成するのが面倒という問題もあります。
Spring BootではXMLは書かず、Javaのコードにアノテーションを書くだけで、全て自動的に行われます。
コードも書かない!?
例えばWebアプリケーションで、特定のアドレスにアクセスした際に何かの処理を行うページを表示する、というような場合でも、アドレスのマッピングや特別なクラス設計は不要です。
ごく当たり前のPOJOクラスを書き、アノテーションをつけるだけで、自動的に指定のアドレスへアクセスしたら実行される処理が作成されます。
デプロイも要らない
Spring Bootは、Mavenコマンドを使って実行すると、自動的にTomcatなどのサーブレットコンテナが組み込まれ、これによりアプリケーションが実行されます。
プロジェクトをWARファイルにまとめたり、サーバへデプロイなどといった作業は不要です。
コンテナ(Tomcatなど)を用意する必要すらないのです。
どのくらい簡単かやってみる
STSを用意する
STS(Spring Tool Suite)という、Springでの開発用IDEがあります。
EclipseにSpringのプラグインを組み込んだIDEです。
http://spring.io/tools のサイトよりダウンロードできます。
Eclipseを触ったことのある方であれば、すんなり使いこなせると思います。
※ JDK(Java SE Development Kit)は組み込んであるものとします。
起動するとEclipseと似たような画面が出てきます。
各メニューはSpring用に特化されており、Spring用プロジェクトもすぐに作成することができます。
(英語版なのはご愛嬌)
プロジェクトを作成
メニューバから[File]-[New]-[Spring Start Project]を選択します。
下図のように入力、選択します。
チェックボック類はSpring内の機能(フレームワーク)ですね。
ここでは「Web」のみを選択します。
「Next」ボタンを押下します。
次に表示されるのは、STSからアクセスするSpringのアドレスです。
Spring Start Projectは、Springのサイトにアクセスして、必要なファイルをダウンロードして作成してくれます。
「Finish」ボタンを押下します。
次に、作成されたプロジェクトを右クリックして、「Run As」から「Maven install」を選びます。
これで、必要なものがインストールされ、ビルドされます。
コントローラを作成します。
メニューバの[File]-[New]-[Class]を選択します。
下図のウィンドウのように入力し、「Finish」を押下します。
HelloController.javaの中身は下記のような感じです。
アノテーションにあるようにRestとして実装しています。
リクエストパスは「/」が定義されているので、「http://localhost:8080/」でアクセスされた時ということです。
レスポンスとして、「this is Spring Boot Sample!」を返しています。
実行するために、「Application.java」を右クリックして「Run As」の「Spring Boot App」を押下します。
コンソールにログが沢山流れると思います。
ログが止まったら「http://localhost:8080」へブラウザでアクセスすると下図のようになったと思います。
いままでのJavaフレームワークで一番簡単なくらいRestのアプリケーションができました!
サーブレットコンテナも何も出てきてません!
もちろんViewを使うのも簡単です。
ちなみにコマンドラインからも実行できます
コマンドラインで実行する
プロジェクト内まで移動して、下記のように入力します。
すると8080ポートで待ち受け状態となります。
java -jar target/MyBootApp1-0.0.1-SNAPSHOT.jar
Viewを使う
JavaアプリケーションのViewはJSPで表現できますが、複雑なアプリケーションになると、ビューデザインが行えるテンプレートエンジンが必要になります。
Spring Bootでは「Thymeleaf」というWebアプリケーション用のテンプレートエンジンをサポートしています。
これを利用することでページのデザインから綺麗に処理部分を切り離してページを作成できるようになります。
Thymeleafを使う
こちらにThymeleafのマニュアルがあります。
pom.xmlの編集
pom.xmlのdependencyに以下を追記します。
application.propertiesの編集
キャッシュを無効にします。設定しないとテンプレートを変更する度にアプリケーションの再起動が必要になります。
テンプレートの作成
以下の所に index.html(テンプレート)を作成します。
コントローラから受け取った情報を繰り返し文で表示しています。
th:each がその部分です。
th:text は、画面に表示する部分です。
src/main/resources/templates/index.html
ちなみに JSP で記述すると繰り返し部分は下記のようになります。
テンプレートを使った場合は、html にコーディングできますが、JSPの場合は原型が分からなくなるくらいになってますね。
前者の場合、htmlをブラウザ表示してもそのまま正しくデザインが表示されます。
後者の場合はそのままでは表示できません。
Javaソースの修正
HelloController.javaを下記のように修正します。
ViewDataクラスに番号とメッセージを詰めて、Viewへ渡すだけです。
ブラウザで表示させた例です。
まとめ
Spring Bootを使うと、最初の面倒な設定を省くことができ、設定も直感的にアノテーションで設定できます。
また、テンプレートエンジンを使うことで見通しの良いコードにすることができます。
カジュアルなWEBアプリにはPHPが使われることが多いかと思いますが、Spring Bootならその代替えにできる可能性があると思います。







