JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
■Spring Boot の小径 第4歩 Spring Boot 匍匐前進
4-2)入力チェック
■SpringMVC の小径 7-2)入力チェックで実験した
入力検証(Validation Check)を、Spring Boot でやってみます。
構成は、7-2)入力チェックで使ったものをそのまま流用します。
コントローラ:src/main/java/jp/dip/arimodoki/cntl/Promenade.java
FormBean :src/main/java/jp/dip/arimodoki/model/PromenadeForm.java
View(HTML):src/main/resources/templates/promenade.html
       src/main/resources/templates/promenaderes.html
メッセージリソース:src/main/resources/ValidationMessages.properties
ここまでは、配置場所の違いはあるものの、基本的には前とほぼ同じです。
今回新しく追加したクラス
メッセージコンフィグレータ:src/main/java/jp/dip/arimodoki/config/MessageConfig.java
ではそれぞれのソースを簡単に説明します
1)コントローラ
src/main/java/jp/dip/arimodoki/cntl/Promenade.java

以前から基本的には変わっていませんが、
今回、■応用の森 Eclipse編で導入した、
Lombokプラグインで、Accesor(getter/setter)自動生成を行うようにしたため、
その弊害で、クラスのインターフェース自動抽出ができなくなったので、
以前とちょっとだけ違う部分があります。
DIする対象が、インターフェースではなく、クラスの実体に変わっています。
ロジック的には全く同じですが、前と異なる部分を赤字にしてみました。
2)FormBean
src/main/java/jp/dip/arimodoki/model/PromenadeForm.java

これも、以前から基本的には変わっていませんが、
Lombokプラグインで、Accesor(getter/setter)自動生成を行うようにしたため、
Accesor(getter/setter)メソッドがごっそりなくなっています。
さらに、インターフェース(PromenadeFormIf)も外してあります。
前と異なる部分だけ赤字にしてみました。
3)View(HTML)
入力表示用HTML:src/main/resources/templates/promenade.html

入力結果表示用HTML:src/main/resources/templates/promenaderes.html

以前のSpringMVCの時の、WebContentから src/main/resources/templates
に配置場所が変わっているだけで内容はほぼ同じです。
一点だけ違うところ。promenade.htmlの、<form>タグの actionで指定されるURLが、
"./promenaderes.xhtml" から拡張子がなくなって、"./promenaderes" になっています。

4)メッセージリソース
src/main/resources/ValidationMessages.properties

これも以前のSpringMVCの時の、WebContent/WEB-INF/classes から src/main/resources
に配置場所が変わっているだけで内容は全く同じです。
5)メッセージコンフィグレータ
src/main/java/jp/dip/arimodoki/config/MessageConfig.java

SpringMVCの時は、入力検証で型変換エラーが発生した場合デフォルトの長ったらしいメッセージを回避するために、
Spring設定ファイル(applicationContext.xml)。でメッセージリソースコンフィグ
<bean id="messageSource">・・・</bean> を定義しましたが
Spring Boot では、XML定義が使えないので、コンフィグレーションクラスを定義しています。
このクラスを、@Configurationアノテーション宣言で作っておくと、
Spring Bootの起動時に自動的にDIコンテナに登録されます。

 

では、どんな動きをするかちょっとだけ確認してみましょう。
前節の3-1)Hello Spring Boot !! の方法でアプリケーションを起動し、
ブラウザのURLに「http://localhost:8080/promenade」を入力します。
なにか適当に入力してみて
入力画面が表示されたら、色々いぢわるな答えを書いてみてください。
まじめに回答しなさい!
真面目に回答してみましょう。
Hello! Everyone. my name is SpringBoot

 

いかがでしたか?。
SpringMVCでは、Spring設定ファイル(applicationContext.xml)で定義していたものが、
アノテーション宣言に変わったり、
@Configurationアノテーションを宣言したクラスに置き換わったりするだけで
基本的には、SpringMVCで作ったソースはほぼそのまま流用できました。