質問編集履歴
5
タイトルを修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Spring Bootのマルチプロジェクトで
|
1
|
+
Spring Bootのマルチプロジェクトで@ComponentScanにより参照先プロジェクトにある依存クラスを@Autowiredしようとすると 参照元クラスのbeanも生成されなくなる
|
body
CHANGED
File without changes
|
4
内容を修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Spring Bootのマルチプロジェクトで別モジュールにある依存クラスを@Autowired
|
1
|
+
Spring Bootのマルチプロジェクトで別モジュールにある依存クラスを@Autowiredできない
|
body
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
※初めて質問します。よろしくお願いいたします。
|
2
|
+
|
2
3
|
### 実現したいこと
|
3
4
|
|
4
5
|
現在、Spring Bootのマルチプロジェクトを作成しており、参照元のプロジェクトの中で
|
5
6
|
参照先の別モジュールにある依存クラスを@Autowiredしたいです。
|
6
7
|
|
7
8
|
### 現在、発生している問題(概要)
|
8
|
-
@ComponentScanにより
|
9
|
+
@ComponentScanにより参照先プロジェクトにある依存クラスを@Autowiredしようとした際に
|
9
|
-
|
10
|
+
参照元クラスのbeanも生成されなくなります。
|
11
|
+
具体的には@RestControllerアノテーションをつけたContorollerです。
|
10
12
|
|
11
13
|
### 前提
|
12
14
|
フォルダ構成は以下のパッケージエクスプローラーの通りです。
|
@@ -14,30 +16,18 @@
|
|
14
16
|

|
15
17
|
|
16
18
|
|
17
|
-
そして、sample-appに以下のようなコントローラーを作成しており、参照設定をしていない状態であればlocalhost:8080/sample/api/testへのアクセスは成功します。(Hello Worldが返ってくる)
|
18
19
|
|
19
|
-
```java
|
20
|
-
package spring.demo.controller;
|
21
|
-
@RestController
|
22
|
-
public class ItemController {
|
23
|
-
@GetMapping("/sample/api/test")
|
24
|
-
public String test() {
|
25
|
-
return "Hello World";
|
26
|
-
}
|
27
|
-
}
|
28
|
-
```
|
29
20
|
### 現在、発生している問題(詳細)
|
30
21
|
|
31
22
|
sample-app/build.gradleにcommon-businessへの参照設定を追記してマルチプロジェクトとし、
|
32
|
-
|
23
|
+
sample-appのmainクラスにて@ComponentScanを付与したところsample-appのBean自体が生成されなくなりました。
|
33
|
-
localhost:8080/sample/api/testへのアクセス
|
24
|
+
具体的には以下のControllerで@ComponentScanをはずすとBeanがうまく生成され、localhost:8080/sample/api/testへのアクセスも成功します。
|
34
25
|
|
35
26
|
```java
|
36
27
|
package spring.demo.controller;
|
37
28
|
import spring.common.demo.ItemService;
|
38
29
|
@RestController
|
39
30
|
public class ItemController {
|
40
|
-
//追記部分
|
41
31
|
@Autowired
|
42
32
|
ItemService itemService;
|
43
33
|
|
@@ -56,17 +46,6 @@
|
|
56
46
|
お手数をおかけしますが、原因部分とその対応策のご教示をお願い致します。
|
57
47
|
|
58
48
|
|
59
|
-
### 発生している問題・エラーメッセージ
|
60
|
-
common-businessへの参照をした後に再度localhost:8080/sample/api/testへのアクセスした際の標準出力は以下の通りです。
|
61
|
-
特にエラーは出ていません。
|
62
|
-
|
63
|
-
```
|
64
|
-
2019-03-01 00:13:34.844 INFO 8432 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
65
|
-
2019-03-01 00:13:34.845 INFO 8432 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
66
|
-
2019-03-01 00:13:34.862 INFO 8432 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 16 ms
|
67
|
-
|
68
|
-
```
|
69
|
-
|
70
49
|
### 該当のソースコード
|
71
50
|
|
72
51
|
sample-appのbuild.gradle及びsetting.gradleは以下の通りです。
|
3
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -57,7 +57,8 @@
|
|
57
57
|
|
58
58
|
|
59
59
|
### 発生している問題・エラーメッセージ
|
60
|
-
localhost:8080/sample/api/testへのアクセスした際の標準出力は以下の通りです。
|
60
|
+
common-businessへの参照をした後に再度localhost:8080/sample/api/testへのアクセスした際の標準出力は以下の通りです。
|
61
|
+
特にエラーは出ていません。
|
61
62
|
|
62
63
|
```
|
63
64
|
2019-03-01 00:13:34.844 INFO 8432 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
@@ -69,6 +70,7 @@
|
|
69
70
|
### 該当のソースコード
|
70
71
|
|
71
72
|
sample-appのbuild.gradle及びsetting.gradleは以下の通りです。
|
73
|
+
/sample-app/build.gradle
|
72
74
|
|
73
75
|
```gradle
|
74
76
|
buildscript {
|
@@ -115,14 +117,40 @@
|
|
115
117
|
|
116
118
|
```
|
117
119
|
|
120
|
+
/sample-app/setting.gradle
|
118
|
-
|
121
|
+
```gradle
|
119
|
-
```
|
120
122
|
|
121
123
|
rootProject.name = 'sample-app'
|
122
124
|
|
123
125
|
include ':common-business'
|
124
126
|
project(':common-business').projectDir = new File('../common-business')
|
125
127
|
```
|
128
|
+
|
129
|
+
/common-business/build.gradle
|
130
|
+
```gradle
|
131
|
+
|
132
|
+
plugins {
|
133
|
+
id 'java'
|
134
|
+
}
|
135
|
+
|
136
|
+
repositories {
|
137
|
+
mavenCentral()
|
138
|
+
}
|
139
|
+
|
140
|
+
dependencies {
|
141
|
+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
|
142
|
+
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
|
143
|
+
implementation 'org.springframework.boot:spring-boot-starter-web'
|
144
|
+
compileOnly 'org.projectlombok:lombok'
|
145
|
+
runtimeOnly 'org.postgresql:postgresql'
|
146
|
+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
147
|
+
|
148
|
+
// Use JUnit test framework
|
149
|
+
testImplementation 'junit:junit:4.12'
|
150
|
+
}
|
151
|
+
|
152
|
+
```
|
153
|
+
|
126
154
|
# 試したこと
|
127
155
|
別モジュールにある依存クラスを@Autowiredするために@ComponentScan("common-business")としています。
|
128
156
|
|
2
タイトルを修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Spring Bootに
|
1
|
+
Spring Bootのマルチプロジェクトで別モジュールにある依存クラスを@AutowiredするとAPI呼び出しが404となる
|
body
CHANGED
File without changes
|
1
Spring Bootのバージョンの記載を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -127,5 +127,5 @@
|
|
127
127
|
別モジュールにある依存クラスを@Autowiredするために@ComponentScan("common-business")としています。
|
128
128
|
|
129
129
|
### 補足情報(FW/ツールのバージョンなど)
|
130
|
-
Spring Boot 2.1.
|
130
|
+
Spring Boot 2.1.3
|
131
131
|
Gradle 4.10.2
|