前提・実現したいこと
Spring Bootを使って画面表示を行ったのですが、パッケージの場所によって表示出来たり、出来なかったりして理解できなかったので、教えて頂きたいです。
ファイル構成です。
app
├ なし
config
├ WebMvcControllerAdvice.java
demo
├ MyFirstAplicationApplication.java
└ SampleController.java
上記の状態だと正常に表示されます。
しかし、SampleController.javaをappパッケージに移動するとWhitelabel Error Pageが出て表示されません。
パッケージ関係なくcontrollerがついたアノテーションを見て表示するのかと思ってました。。
なぜdemoパッケージ内じゃないと動かないのかがわかりません。demoパッケージを指定した記憶などなく
SampleController.javaをappパッケージに移動させて表示させるにはどうしたらいいでしょうか。分かる方教えて頂きたいです。
java
1package com.example.config; 2 3 4import org.springframework.beans.propertyeditors.StringTrimmerEditor; 5import org.springframework.web.bind.WebDataBinder; 6import org.springframework.web.bind.annotation.ControllerAdvice; 7import org.springframework.web.bind.annotation.InitBinder; 8 9 10/** 11 * 全てのControllerで共通処理を定義 12 */ 13@ControllerAdvice 14public class WebMvcControllerAdvice { 15 16 /* 17 * This method changes empty character to null 18 * こちらのメソッドを用意しておくと送信された空文字はnullに変換されます 19 */ 20 @InitBinder 21 public void initBinder(WebDataBinder dataBinder) { 22 dataBinder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); 23 } 24 25}
java
1package com.example.demo; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6@SpringBootApplication 7public class MyFirstAplicationApplication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(MyFirstAplicationApplication.class, args); 11 } 12 13}
java
1package com.example.demo; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.web.bind.annotation.GetMapping; 6import org.springframework.web.bind.annotation.RequestMapping; 7 8@Controller 9@RequestMapping("/sample") 10public class SampleController { 11 @GetMapping("/test") 12 public String test(Model model) { 13 model.addAttribute("title","info"); 14 return "test"; 15 } 16} 17