SpringBoot入門のサンプルプロジェクトが動作しない
業務ではもっぱらSpringMVCを弄っていますが、
自宅ではSpringBoot触りたい。
そう思って、ネットで「SpringBoot入門」を検索しました。
良さげな入門サイトを見つけたので、
SpringBootのサンプルプロジェクトを作ることに。
しかし……速攻で詰まりました。
入門サイトの通りにController、htmlを書いているのになぜか動作しないのです。
複数サイトを回って、そのサイト通りに作成しても全て動作せず、
ローカル環境を疑ってSTSのバージョンを変更しても動作せず、
頭にきて入門用の本を買って試行してもうまくいかず、
正直、途方にくれました。
発生しているエラー
入門サイト通りにController・htmlを実装し、
http://localhost:8080/hello
↑みたいなURLを叩くとエラー画面が表示されます。
原因調査
RequestMappingの書き方が間違っている? → 問題なし
Thymeleafがうまく導入できていない? → 問題なし
STSのバージョンの問題? → どのバージョンでも同じようにエラーが発生する。
Mavenのローカルリポジトリが悪さを? → 関係ない
pom.xmlの書き方がミスっている? → どの入門サイトの書き方でもNGになる。
色々調査しましたが、中々原因を見つけられませんでした。
原因:controllerクラスのパス
原因は@SpringBootApplicationがついたhogeApplication.javaと
controllerクラスを別のパッケージに置いたことでした。
@SpringBootApplicationはデフォルトの場合、
同パッケージor子パッケージしかスキャンしないようです。
よってcontrollerクラスを他のパッケージに置いてもスキャンされないため、
mappingがうまくいかずエラーになります。
解決策
@SpringBootApplicationhaを付与したhogeApplication.javaと同じパッケージ、
または子パッケージにControllerクラスを配置してやればOKです。
または@SpringBootApplicationにscanBasePackages属性を追加し、
スキャンするパッケージを指定すれば、指定パスもスキャンするようになるようです。
まとめ
気付くのに数日要しました。
入門サイトで勉強する初心者の方は気をつけてください。
ディスカッション
コメント一覧
まだ、コメントがありません