Springboot プロジェクトを独立して開発するのはこれが初めてです。最初はこんなにイライラするとは思っていませんでした。どのパスにアクセスしても、常に 404 が返されました。このエラーを探すのに 12 時間近く費やしました。
パスの記述が間違っています
アプリケーション クラスがコントローラーと同じパッケージ内にありませんpackage
問題を解決した後は、次の解決策が役立つ場合があります。
リクエストが404を返してもコンソールはエラーを報告しません。Spring DispatcherServlet 'dispatcherServlet'の初期化のエラーだと思いました。その理由は、リクエスト中に 404 が返され、コンソールにのみさらに 3 行のログが表示されるためです。
そこで、Spring DispatcherServlet の初期化に関連するエラーを探してきました。 。残念ながら、ほぼすべてのブログを検索しましたが、まだ問題は解決していません。ラインログを検索している兄弟もこの問題に遭遇していると思いますが、ここで言いたいのは、このラインのログは正常であるということです。 springboot プロジェクトを再作成したところ、リクエストが成功するとコンソールでこれら 3 行のログも出力されることがわかりました。
誤解 2 は、上記の誤解 1 に基づいています。誰もが Spring DispatcherServlet の初期化が間違いであると考えているため、関連するメソッドを探します。 1 つの方法は、構成ファイルで次の変更を行うことです。
しかし、私の観察によると、Initializing Spring DispatcherServlet はプロジェクトの起動全体で 1 回だけ印刷されます。つまり、この DispatcherServlet は 1 回だけ初期化されることになります。 (ちょっとナンセンスです笑) 上記の設定は、プロジェクトの開始時に DispatcherServlet を初期化するためのものですが、設定されていない場合、または負の数に設定されている場合は、最初のリクエストの到着を待つときに DispatcherServlet が初期化されます。自分で試してみて、上記の構成を追加してプロジェクトを開始すると、リクエストの受信を待たずに 3 行のログが直接出力されることを確認できます。
@ComponentScan アノテーションを使用しているため、問題は実際には非常に単純です。通常の Springboot では、このアノテーションを使用する必要がないため、アプリケーション クラスは自動的にスキャンします。パッケージとサブパッケージのすべてのファイル。ただし、このアノテーションを使用した場合、デフォルトのアノテーションは無効になります。ここで @ComponentScan アノテーションを使用する理由はさまざまです。私は自動テーブル作成への依存関係を導入し、チュートリアルに従ってアプリケーション クラスに ComponentScan を追加しました。そのため、解決策は、アプリケーション クラスが配置されているパッケージ パスを追加することです。
本質的に、私はまだこれらの注釈に対して十分に敏感ではなく、無駄な作業に多くの時間を費やしましたが、幸いなことにそれは解決されました。
以上がスプリングブートアクセス404問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。