質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

4589閲覧

@Autowiredをprivate BlogRepository blogRepository;に付けてSpring Bootアプリケーションで実行するとエラーが出る

D08282831

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/09/02 00:51

@Autowiredをprivate BlogRepository blogRepository;に付けてSpring Bootアプリケーションで実行すると以下のようなエラーが出ます。

Description: Field blogRepository in com.webapp.certificationtest.controller.LoginController required a bean of type 'jp.winschool.spring.merukari.BlogRepository' that could not be found. The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type 'jp.winschool.spring.merukari.BlogRepository' in your configuration.

コードは以下のようになっています。

//LoginController.java package com.webapp.certificationtest.controller; import java.time.LocalDateTime; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import jp.winschool.spring.merukari.Blog; import jp.winschool.spring.merukari.BlogRepository; @Controller public class LoginController { @Autowired private BlogRepository blogRepository; /** * ログイン画面 に遷移する。 */ @RequestMapping("/login") public String showLoginForm(Model model) { //ログイン画面。 return "login"; } /** * メインページに遷移する。 * ログインが成功した場合、このメソッドが呼び出される。 */ @RequestMapping("/") public String login(Model model) { //メインページ。 return "index"; } // @RequestMapping("/needLogin/form") // public String form(Model model) { // // //ログイン画面。 // return "form"; // } @GetMapping("/form") public String form(Blog blog) { return "form"; } // @PostMapping("/create") // public String create(@Valid @ModelAttribute Blog blog, BindingResult bindingResult, Model model, // @RequestParam String price) { // boolean isNumber = price.matches("^[0-9]+$"); // boolean checkDigit = price.length() >= 10; // model.addAttribute("isNumber", !isNumber); // model.addAttribute("checkDigit", checkDigit); // model.addAttribute("isMinus", false); // // 入力値エラーが発生した場合、予約画面を表示 // if (bindingResult.hasErrors()) { // return "form"; // } // // // 正規表現で数字の形式になっているかチェック // if (!isNumber) { // return "form"; // } else if (checkDigit) { // return "form"; // } else if (Integer.parseInt(price) < 0) { // model.addAttribute("isMinus", true); // return "form"; // } else { // blog.setPrice(Integer.parseInt(price)); // } // blog.setPostDateTime(LocalDateTime.now()); // blogRepository.save(blog); // return "redirect:/blog/" + blog.getId(); // } }
//BlogRepository.java package com.webapp.certificationtest.controller; import org.springframework.data.jpa.repository.JpaRepository; public interface BlogRepository extends JpaRepository<Blog, Integer> { }

以下のようにBlogRepositoryインターフェースの前に@Beanを付ければいいのかとも思いましたが、
「@Beanはこのロケーションでは使用できません」と出てきました。

@Bean public interface BlogRepository extends JpaRepository<Blog, Integer> { }

拙い状況説明で分かりづらいところもあるかもしれませんが、
エラーの修正方法をご教授いただければ幸いです。
一応後で全ソースコードもアップする予定です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

LoginControllerクラスのimportは、正しいでしょうか?

java

1//LoginController.java 2import jp.winschool.spring.merukari.Blog; 3import jp.winschool.spring.merukari.BlogRepository; 4

BlogRepositoryは、com.webapp.certificationtest.controllerにあるので、別のBlogRepositoryをimportしているように見えます。

Java

1//BlogRepository.java 2package com.webapp.certificationtest.controller; 3 4import org.springframework.data.jpa.repository.JpaRepository; 5// Blogクラスのimportが無い? 6 7public interface BlogRepository extends JpaRepository<Blog, Integer> { 8}

なお、コンポーネントスキャン(@Autowiredで使える)対象となるのは、標準ではApplicationクラスの「同パッケージ」と「配下のパッケージ」です。このため、jp.winschool.spring.merukari.BlogRepositoryの方は、標準で読み込むことができません。

投稿2021/09/02 09:29

KT001

総合スコア659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

D08282831

2021/09/03 01:41

ご回答ありがとうございます。 回答を参考に以下のように修正したら動きました。 ありがとうございました! import jp.winschool.spring.merukari.Blog; import jp.winschool.spring.merukari.BlogRepository; ↓ import com.webapp.certificationtest.controller.Blog; import com.webapp.certificationtest.controller.BlogRepository;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問