MongoDB を Spring RESTful API と統合しようとすると、ユーザーは「フィールドには、見つからないタイプの Bean が必要でした。」というエラーが発生する場合があります。このエラーは、Spring アプリケーションが必須 Bean (この場合は UserService Bean) を見つけられないことを示します。
このエラーは、Spring がプロジェクト内のコンポーネントをスキャンする方法によって発生します。デフォルトでは、Spring は @SpringBootApplication のアノテーションが付けられたパッケージ内のコンポーネントをスキャンします。この場合、UsersController クラスは UserService に依存しており、デフォルトのスキャンパスの外側にあります。
この問題を解決するには、主に 2 つのアプローチがあります。
アプローチ 1 : パッケージ スキャンのカスタマイズ
@SpringBootApplication(scanBasePackages={...}) アノテーションを使用して、コンポーネントをスキャンする必要があるパッケージを手動で指定します。この場合、メイン アプリケーション クラスに次の行を追加します。
<code class="java">@SpringBootApplication(scanBasePackages={"main.java.service", "main.java.rest"})</code>
これにより、Spring にサービス パッケージと残りのパッケージの両方でコンポーネントをスキャンするよう指示されます。
アプローチ 2:パッケージ構造の再構築
または、プロジェクトのパッケージ構造を再構築して、関連するすべてのコンポーネントが同じパッケージ内に含まれるようにします。この場合、次のようにプロジェクトを再編成します。
src/ ├── main/ │ └── java/ | └── com.example/ | | ├── Application.java | | ├── model/ | | | └── User.java | | ├── rest/ | | | ├── IndexController.java | | | └── UsersController.java | | ├── service/ | | | └── UserService.java └── resources/ └── application.properties
これにより、UserService に関連するすべてのコンポーネントが同じパッケージ内に存在することが保証され、Spring がそれらを自動的にスキャンします。
以上がMongoDB を使用した Spring RESTful API で「フィールドには、見つからないタイプの Bean が必要でした」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。