回答編集履歴
2
質問者様の例について言及を追加
answer
CHANGED
@@ -3,6 +3,12 @@
|
|
3
3
|
ベースとなるアプリケーションと「同じパッケージ」と「それ以下の階層のパッケージ」をスキャンするため、
|
4
4
|
質問者様の疑問に感じるような挙動が発生しているのだと予想します。
|
5
5
|
|
6
|
+
質問者様のケースでは、
|
7
|
+
「demo 配下に Controller を置いた」場合、「Application と同じパッケージ」のため、コンポーネントスキャンが可能でしたが、
|
8
|
+
「app 配下に Controller を置いた」場合、「Application とは別のパッケージ」のため、コンポーネントスキャンがされていないのだと思います。
|
9
|
+
そのため、設定・実装したルーティングが取り込まれず、表示がうまくできていないものと思われます。
|
10
|
+
|
11
|
+
|
6
12
|
ここでベースのアプリケーションクラスというのは
|
7
13
|
`@SpringBootApplication` のアノテーションのついたクラスのことです。
|
8
14
|
|
1
日本語が読みにくかったのでちょっと修正
answer
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
SpringBoot のコンポーネントスキャンは
|
1
|
+
SpringBoot のコンポーネントスキャンは
|
2
|
+
デフォルトでは
|
3
|
+
ベースとなるアプリケーションと「同じパッケージ」と「それ以下の階層のパッケージ」をスキャンするため、
|
2
|
-
|
4
|
+
質問者様の疑問に感じるような挙動が発生しているのだと予想します。
|
3
5
|
|
6
|
+
ここでベースのアプリケーションクラスというのは
|
4
|
-
|
7
|
+
`@SpringBootApplication` のアノテーションのついたクラスのことです。
|
5
8
|
|
9
|
+
関係性を表すと、
|
10
|
+
スキャンできるクラス、できないクラスの例としては以下のようになります。
|
6
11
|
```
|
7
12
|
com.sample
|
8
13
|
├app
|
@@ -11,10 +16,11 @@
|
|
11
16
|
| ├ Application.java (@SpringBootApplication がついてる)
|
12
17
|
| └ AppController.java (同じパッケージなのでスキャンできる)
|
13
18
|
└ another
|
14
|
-
└ AnotherController.java (app 別のパッケージなのでスキャンできない)
|
19
|
+
└ AnotherController.java (app とは別のパッケージなのでスキャンできない)
|
15
20
|
```
|
16
21
|
|
22
|
+
デフォルトの場合、と書きましたが、設定次第で並列のパッケージも読み取ることは可能です。
|
17
|
-
並列のパッケージもスキャンしたい場合の例としては、
|
23
|
+
並列のパッケージもスキャンしたい場合の対応の例としては、
|
18
24
|
`@SpringBootApplication` の引数に `scanBasePackages={<引き込みたい親のpackage 名>}`を指定します。
|
19
25
|
上の例だと、com.sample 以下をスキャンしたい場合は、
|
20
26
|
アプリケーションクラス(例だと `Application.java`に)以下を設定します
|