[解決済み] UnsatisfiedDependencyException。名前を持つ Bean の作成エラー
質問
数日間、Spring CRUDアプリケーションを作成しようとしています。私は混乱しています。 私はこのエラーを解決することはできません。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'clientController': メソッド 'setClientService' パラメータ 0 で表される Unsatisfied 依存関係; ネストされた例外は org.springframework.beans.factory.UnsatisfiedDependencyException.Error creating bean with name 'clientController' で、ビーンの作成に失敗しました。名前 'clientService' を持つ Bean の作成に失敗しました。また、このビーンには、'com.springframework.beans.factory.NoSuchBeanDefinitionException.UnsatisfiedRepository'フィールドを通して表現される依存関係が含まれています。com.kopylov.repository.ClientRepository' タイプの修飾された Bean は利用できません: autowire の候補として修飾される少なくとも 1 つの Bean を期待しました。依存関係アノテーション。{このような場合、'com.kopylov.resource.ClientRepository'タイプの適格なビーンがありません。
と、この
org.springframework.beans.factory.UnsatisfiedDependencyException: 名前 'clientService' を持つ Bean の作成に失敗しました。このビーンは、'com.springframework.beans.factory.NoSuchBeanDefinitionException: com.kopylov.repository.ClientRepository' タイプの修飾された Bean は利用できません: autowire の候補として修飾される少なくとも 1 つの Bean を期待しました。依存関係アノテーション。{このような場合、'com.kopylov.resource.ClientRepository'タイプの適格なビーンがありません。
ClientController
@Controller
public class ClientController {
private ClientService clientService;
@Autowired
@Qualifier("clientService")
public void setClientService(ClientService clientService){
this.clientService=clientService;
}
@RequestMapping(value = "registration/add", method = RequestMethod.POST)
public String addUser(@ModelAttribute Client client){
this.clientService.addClient(client);
return "home";
}
}
ClientServiceImpl
@Service("clientService")
public class ClientServiceImpl implements ClientService{
private ClientRepository clientRepository;
@Autowired
@Qualifier("clientRepository")
public void setClientRepository(ClientRepository clientRepository){
this.clientRepository=clientRepository;
}
@Transactional
public void addClient(Client client){
clientRepository.saveAndFlush(client);
}
}
クライアントリポジトリ
public interface ClientRepository extends JpaRepository<Client, Integer> {
}
私は同じような質問の多くに目を通しましたが、それらに答えるものは私を助けることができません。
どのように解決するのですか?
ClientRepositoryにアノテーションを付けます。
@Repository
タグで指定します。
現在の設定では、Springはクラスをスキャンしてそれに関する知識を得ることができません。起動時や配線時にClientRepositoryクラスが見つかりません。
EDIT
を追加した場合
@Repository
タグを追加しても解決しない場合は、今の問題は
ClientService
と
ClientServiceImpl
.
にアノテーションを付けてみてください。
ClientService
(インターフェイス)に
@Service
. サービスの実装はひとつだけでよいので、オプションのパラメータである
@Service("clientService")
. Springはインターフェイスの名前に基づいてそれを自動生成します。
また、Brunoが言ったように
@Qualifier
は必要ありません。
ClientController
は必要ありません。
ClientService.java
@Service
public interface ClientService {
void addClient(Client client);
}
ClientServiceImpl.java (オプション1)
@Service
public class ClientServiceImpl implements ClientService{
private ClientRepository clientRepository;
@Autowired
public void setClientRepository(ClientRepository clientRepository){
this.clientRepository=clientRepository;
}
@Transactional
public void addClient(Client client){
clientRepository.saveAndFlush(client);
}
}
ClientServiceImpl.java (オプション2/優先)
@Service
public class ClientServiceImpl implements ClientService{
@Autowired
private ClientRepository clientRepository;
@Transactional
public void addClient(Client client){
clientRepository.saveAndFlush(client);
}
}
ClientController.java
@Controller
public class ClientController {
private ClientService clientService;
@Autowired
//@Qualifier("clientService")
public void setClientService(ClientService clientService){
this.clientService=clientService;
}
@RequestMapping(value = "registration", method = RequestMethod.GET)
public String reg(Model model){
model.addAttribute("client", new Client());
return "registration";
}
@RequestMapping(value = "registration/add", method = RequestMethod.POST)
public String addUser(@ModelAttribute Client client){
this.clientService.addClient(client);
return "home";
}
}
関連
-
NullPointerException - java.lang.
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
-bash: java: コマンドが見つからない 解決方法
-
Junitのユニットテストはjava.lang.Testを報告します。
-
Javaがテキストファイルを読み込む
-
maven レポート エラー 解決不可能な親POM
-
eclipse にリソースリーク:'in' が閉じない
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
-bash: java: コマンドが見つからない 解決方法
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
Zipファイルの圧縮・解凍にantを使用する