teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2021/11/30 11:47

投稿

nagasaka
nagasaka

スコア0

title CHANGED
File without changes
body CHANGED
@@ -2,29 +2,23 @@
2
2
 
3
3
  Spring Boot を使用したCRUD機能を持ったWebアプリを制作しています。
4
4
  現在は会員登録機能を実装している段階です。
5
- MyBatisで会員登録部分を作成したので、DIコンテナから
6
- Beanを取り出そうとしたら以下の様なエラーが出てしまいました。
5
+ DIコンテナからMapper.java のBeanを変数に注入しようとしましたら以下のエラーが
6
+ 表示されました。
7
7
 
8
- 【追記】
9
- @import で該当クラスを囲んだ所別の例外が出力されてしまいました。
8
+ Field user in com.example.demo.controller.RegisterController required a bean of type 'com.example.demo.repository_interface.UserMapper' that could not be found.
10
9
 
10
+ 他の質問でエラー解消の方法を尋ねた際に、@Import アノテーションをMapperクラスに
11
+ 付けるようにとご指摘を頂きましたので試してみたところエラーは消えましたが
12
+ 別の例外が出力されてしまいました。
13
+ 半日試行錯誤しましたが解決する事は出来ませんでした。
14
+ 解決方法をご教示頂きたいです。宜しくお願い致します。
15
+
11
16
  ### 発生している問題・エラーメッセージ
12
- DIコンテナからBeanを取得する事が出来ません。
17
+ DIコンテナからBeanを取得する事が出来ません。原因はUserMapper.javaをDIコンテナにBeanとして格納する事が出来ていないからだと考えています。根本的な原因はUserMapper.javaとUserMapper.xmlが何かしらの原因で関連付けされていない或いは機能していないからではないかと考えています。
13
18
 
14
- 【追記】
15
- DIコンテナに Bean を追加する事が出来ないので、依存性の注入をする事が出来ません。
16
- 根本的な原因はUserMapperインターフェイスをインスタンス化する事が出来ていない
17
- のに行おうとしているからだと考えています。そこで、
18
- 実装クラスをインスタンス化する処理に書き換えたいのですが
19
- どこをどのように変えればよいのか見当がついていません。
20
- 初学者なので、そもそも考え方として正しいのかも自身がありません。
21
- どなたかご教示願えないでしょうか。
22
19
  ```
23
20
  エラーメッセージ
24
- Field user in com.example.demo.controller.RegisterController required a bean of type 'com.example.demo.repository_interface.UserMapper' that could not be found.
25
21
 
26
- 【追記】
27
-
28
22
  org.springframework.beans.factory.UnsatisfiedDependencyException:
29
23
  Error creating bean with name 'registerController':
30
24
  Unsatisfied dependency expressed through field 'user';
@@ -149,7 +143,7 @@
149
143
  <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
150
144
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
151
145
  <mapper namespace="com.example.demo.repository_interface.UserMapper">
152
- <insert id="Register">
146
+ <insert id="Register" parameterType="User">
153
147
  insert into user(
154
148
  name
155
149
  ,password
@@ -198,14 +192,17 @@
198
192
  ```
199
193
  ### 試したこと
200
194
 
201
- ・DIコンテナに登録されていない可能性を疑い、
202
-  登録対象になるアノテーション割り当られている確認しました。
195
+ ・Mybatis必要ライブラリ欠けている可能性疑いました。
203
-  @Mapper割り当てられていたので問題ないと判断てい
196
+  ・pom.xml にmybatis-spring-boot-starter 存在するか確認しました
204
197
 
205
- ・コンポーネントスキャンの対象なっていない可能性を疑い
198
+ DIコンテナMapperが登録されていない可能性を疑いました。
199
+  ・Mapper.javaに@Mapperがついているかどうかを確認しました。
206
- Application.java に @SpringBootApplication(scanBasePackages={"com.example.demo"})
200
+  ・Mapper.xmlのnamespace属性やID属性の情報が間違っていないかを確認しました。
207
- と追記しました。
208
201
 
209
- 変化はありせんでした。ファイル構成は以下の通りです。
202
+ ・コンポーネントスキャンの対象になっていない可能性を疑いました。
203
+  ・Application.javaに@SpringBootApplication(scanBasePackages={"com.example.demo"})を追記しました。
210
204
 
205
+ ファイル構成は以下の通りです。
211
- ![![イメージ説明](7b5a1f1a8c64d4721f77cf53a94430f8.png)]
206
+ ![![イメージ説明](7b5a1f1a8c64d4721f77cf53a94430f8.png)]
207
+
208
+ ご指導をお願い致します。

1

文法の修正

2021/11/30 11:47

投稿

nagasaka
nagasaka

スコア0

title CHANGED
File without changes
body CHANGED
@@ -5,11 +5,47 @@
5
5
  MyBatisで会員登録部分を作成したので、DIコンテナから
6
6
  Beanを取り出そうとしたら以下の様なエラーが出てしまいました。
7
7
 
8
+ 【追記】
9
+ @import で該当クラスを囲んだ所別の例外が出力されてしまいました。
10
+
8
11
  ### 発生している問題・エラーメッセージ
9
- DIコンテナからBeanを取得する事が出来ない
12
+ DIコンテナからBeanを取得する事が出来ません。
13
+
14
+ 【追記】
15
+ DIコンテナに Bean を追加する事が出来ないので、依存性の注入をする事が出来ません。
16
+ 根本的な原因はUserMapperインターフェイスをインスタンス化する事が出来ていない
17
+ のに行おうとしているからだと考えています。そこで、
18
+ 実装クラスをインスタンス化する処理に書き換えたいのですが
19
+ どこをどのように変えればよいのか見当がついていません。
20
+ 初学者なので、そもそも考え方として正しいのかも自身がありません。
21
+ どなたかご教示願えないでしょうか。
10
22
  ```
11
23
  エラーメッセージ
12
24
  Field user in com.example.demo.controller.RegisterController required a bean of type 'com.example.demo.repository_interface.UserMapper' that could not be found.
25
+
26
+ 【追記】
27
+
28
+ org.springframework.beans.factory.UnsatisfiedDependencyException:
29
+ Error creating bean with name 'registerController':
30
+ Unsatisfied dependency expressed through field 'user';
31
+
32
+ nested exception is
33
+ org.springframework.beans.factory.BeanCreationException:
34
+ Error creating bean with name 'com.example.demo.repository_interface.UserMapper': Instantiation of bean failed;
35
+
36
+ nested exception is
37
+ org.springframework.beans.BeanInstantiationException:
38
+ Failed to instantiate [com.example.demo.repository_interface.UserMapper]:
39
+ Specified class is an interface
40
+ 以下略
41
+
42
+ Caused by: org.springframework.beans.factory.BeanCreationException:
43
+ Error creating bean with name 'com.example.demo.repository_interface.UserMapper': Instantiation of bean failed;
44
+ nested exception is org.springframework.beans.BeanInstantiationException:
45
+ Failed to instantiate [com.example.demo.repository_interface.UserMapper]:
46
+ Specified class is an interface
47
+ 下略
48
+
13
49
  ```
14
50
  ### 該当のソースコード
15
51
  【pom.xml】