対象ファイル
src/main/resources/application.properties
はじめに
前回は Web リクエストを受け取る TestController.java を読んだ。
今回はサーバー環境や ViewResolver の動作を制御する設定ファイルである application.properties を見ていく。
Spring Boot 起動時にこの設定がどう読み込まれ、Controller から返された文字列がどうやって物理的な JSP パスへ変換されるのか、その流れを整理してみた。
application.properties(環境設定ファイル)
サーバーのポート番号や Spring MVC の ViewResolver 設定をキー・バリュー形式で定義する設定ファイルだ。
spring.application.name=boot_basic
server.port=9990
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
設定の読み込みと動作フロー(Configuration Flow)
-
アプリケーション起動時の設定読み込み
Spring Boot 起動時、src/main/resources/application.propertiesが自動的にスキャンされ、環境変数としてロードされる。 -
内蔵 Web サーバーのポートバインディング
server.port=9990の設定に基づき、デフォルトの 8080 ポートではなく9990ポートで内蔵 Tomcat が起動する。 -
InternalResourceViewResolver の自動構成
spring.mvc.view.prefixとspring.mvc.view.suffixの値を受け取り、Spring 内部でViewResolverが自動生成される。 -
リクエスト処理時の View パス解決
Controller(例:TestController)が"aaa"という文字列を返却すると、ViewResolverが前後テキストを結合して/WEB-INF/views/aaa.jspという物理パスを生成する。
気になった部分・改善ポイント
設定内容を読んでいて、いくつか重要な工夫や改善できそうなポイントが気になった。
1. ポート衝突の回避
デフォルトポート(8080)の代わりに 9990 ポートを明示的に指定している。
ローカル開発環境で他の Web アプリケーションやローカルサーバーとポートがバッティングするのを防ぐ良い設計だと思った。
2. セキュリティ領域(/WEB-INF/)の活用
Prefix パスを /WEB-INF/views/ に設定しているのがポイントだ。
/WEB-INF/ 配下のファイルはブラウザから直接 URL を入力してアクセスすることができない(403 または 404 になる)。
必ず Controller を経由させて描画させる安全な MVC 構造が作られている。
3. YAML 形式(application.yml)への移行検討
現在は .properties 形式で書かれているが、キーの接頭辞(spring.mvc.view. など)を何度も繰り返し書く必要がある。
// 改善案:階層構造で書ける YAML 形式にリファクタリングする
spring:
application:
name: boot_basic
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
server:
port: 9990
階層構造で記述できる .yml(YAML)形式に切り替えると、視認性が上がって設定項目が増えても管理しやすくなりそうだ。
設定キーのまとめ
| 設定キー (Property Key) | 設定値 (Value) | 役割および動作説明 |
|---|---|---|
spring.application.name |
boot_basic |
アプリケーションの識別名を定義する |
server.port |
9990 |
内蔵 Tomcat が使用する HTTP ポート番号を指定する |
spring.mvc.view.prefix |
/WEB-INF/views/ |
Controller が返す View 名の前に結合されるパス |
spring.mvc.view.suffix |
.jsp |
Controller が返す View 名の後ろに結合される拡張子 |
今回学んだこと
- Controller が返した論理名(例:
"aaa")は、application.propertiesの Prefix と Suffix が自動結合されて/WEB-INF/views/aaa.jspに変換される -
/WEB-INF/ディレクトリ内に JSP を配置することで、直リンクによる直接アクセスを防ぎセキュリティを高めている - 設定ファイルは
.propertiesだけでなく.ymlも使えるので、プロジェクトの規模に合わせて見やすい形式を選びたい
次は実際の画面側である JSP ファイル(aaa.jsp や abc.jsp)の記述を見ていきたい。