カテゴリ: Spring 更新日: 2026/03/23

Springの404・405・415エラー原因と対処法まとめ!NoHandlerFoundまで完全解説

404/405/415 など標準エラーの原因と対処:NoHandlerFound…まで総点検
404/405/415 など標準エラーの原因と対処:NoHandlerFound…まで総点検

先生と生徒の会話形式で理解しよう

生徒

「Spring Bootアプリで突然『404 Not Found』って出て困ってます。何が原因なんでしょうか?」

先生

「それは典型的なHTTPエラーの一つですね。SpringではリクエストURLに対するハンドラが見つからないと404が発生しますよ。」

生徒

「他にも『405 Method Not Allowed』や『415 Unsupported Media Type』が出ることもあって…対処方法が知りたいです!」

先生

「よし、ではSpringでよく出る標準エラーの原因と対処法を総点検してみましょう。」

1. Spring Bootでよく見るHTTPエラーとは?

「1. Spring Bootでよく見るHTTPエラーとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. Spring Bootでよく見るHTTPエラーとは?
1. Spring Bootでよく見るHTTPエラーとは?

Spring Bootを使ったWebアプリケーションでは、HTTPステータスコードに応じて様々なエラーが発生します。代表的なものとして、404 Not Found405 Method Not Allowed415 Unsupported Media Typeなどがあります。

これらのエラーはフロントエンドからバックエンドに正しくリクエストが届いていない、もしくはSpring側で処理対象が定義されていないことを意味します。

2. 404 Not Found の原因と解決方法

2. 404 Not Found の原因と解決方法
2. 404 Not Found の原因と解決方法

404エラーは、SpringがそのURLに対応するコントローラのメソッド(ハンドラ)を見つけられなかった場合に発生します。

  • URLのパスが間違っている
  • メソッドに@GetMappingなどが正しく設定されていない
  • Spring MVCの設定で静的リソースとの競合がある

また、Spring Bootではapplication.propertiesで以下の設定を入れることで、NoHandlerFoundExceptionを捕捉できます。


spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false

3. 405 Method Not Allowed の原因と対処

3. 405 Method Not Allowed の原因と対処
3. 405 Method Not Allowed の原因と対処

このエラーはリクエストのHTTPメソッドが間違っているときに出ます。

  • 例:@GetMappingしかないのに、POSTでリクエストしている
  • フロントエンドで送るメソッドの種類が違う(例:fetchでGET送信するつもりがPOSTに)

Java側での正しい指定例:


@Controller
public class UserController {

    @PostMapping("/register")
    public String register(UserForm form) {
        return "success";
    }
}

このように、受け取るHTTPメソッドに対応したアノテーションを必ず使いましょう。

4. 415 Unsupported Media Type の原因と対処

「4. 415 Unsupported Media Type の原因と対処」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 415 Unsupported Media Type の原因と対処
4. 415 Unsupported Media Type の原因と対処

415エラーは、リクエストのContent-TypeにSpring側が対応できない場合に発生します。

  • application/jsonを送っているのに、Java側で@RequestBodyが付いていない
  • 受け取るクラスにJacksonでパース可能な構造になっていない

例として、以下のように書くことでJSONを受け取ることができます:


@PostMapping(value = "/api", consumes = "application/json")
public ResponseEntity<String> receive(@RequestBody MyRequest request) {
    return ResponseEntity.ok("OK");
}

5. NoHandlerFoundException をキャッチして独自エラー画面を表示

5. NoHandlerFoundException をキャッチして独自エラー画面を表示
5. NoHandlerFoundException をキャッチして独自エラー画面を表示

Springでは、コントローラが見つからない場合、通常はBasicErrorControllerによってエラー画面が表示されます。しかし設定次第でNoHandlerFoundExceptionをキャッチして独自処理に変更できます。


@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(NoHandlerFoundException.class)
    public String handle404(NoHandlerFoundException e) {
        return "error/404";
    }
}

また、application.propertiesで例外を投げる設定も必要です。


spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false

6. 独自のエラーページを作ってUX改善

6. 独自のエラーページを作ってUX改善
6. 独自のエラーページを作ってUX改善

初心者がよく困るのが、真っ白なエラーページ。これを改善するには、resources/templates/error/配下にカスタムのHTMLテンプレートを配置しましょう。


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>ページが見つかりません</title>
</head>
<body>
    <h1>404 Not Found</h1>
    <p>お探しのページは見つかりませんでした。</p>
</body>
</html>

このように、ユーザー向けのエラーページを丁寧に用意することで、Webアプリの信頼性やユーザビリティが向上します。

7. Springの標準エラーは例外ではないことに注意

「7. Springの標準エラーは例外ではないことに注意」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. Springの標準エラーは例外ではないことに注意
7. Springの標準エラーは例外ではないことに注意

例えば404405などのHTTPエラーは、Javaでいう例外(Exception)とは少し異なり、Springが内部で処理している状態コードによる応答です。明示的に例外がスローされるわけではなく、ハンドリングされていないURLや不正なメソッドに対する反応です。

そのため、@ExceptionHandlerでキャッチするには、BasicErrorControllerの動作をオーバーライドしたり、HandlerExceptionResolverを使って制御する必要があります。

8. エラーを防ぐためのチェックリスト

8. エラーを防ぐためのチェックリスト
8. エラーを防ぐためのチェックリスト

最後に、Spring Bootアプリでよくある標準エラーを防ぐためのチェックリストをまとめます。

  • URLパスと@RequestMappingの整合性を確認
  • HTTPメソッド(GET/POST/PUTなど)を正確に対応
  • @RequestBodyの付け忘れに注意
  • application.propertiesの設定を見直す
  • 静的ファイルやテンプレートのパスミスに注意
  • 独自エラー画面を整備しUX改善

まとめ

まとめ
まとめ

ここまで、Spring Bootで発生しやすい代表的なHTTPエラーである404エラー、405エラー、415エラーの原因と対処方法について詳しく解説してきました。Spring Bootを利用したWebアプリケーション開発では、これらのエラーは非常に頻繁に発生します。特にJava初心者やSpring初心者が最初につまずきやすいポイントとして、URLの設定ミス、HTTPメソッドの不一致、リクエストのContentTypeの設定ミスなどが挙げられます。

まず404エラーは、Spring MVCが指定されたURLに対応するコントローラのハンドラメソッドを見つけることができなかった場合に発生します。つまり、ブラウザやフロントエンドから送信されたURLと、Spring BootのControllerに定義されているRequestMappingやGetMapping、PostMappingなどのマッピング設定が一致していない場合に表示されるエラーです。Spring BootでWebアプリケーションを作成する際には、URLパスの設計を整理し、Controller側のアノテーション設定を正確に行うことが重要です。

次に405エラーは、HTTPメソッドが一致していない場合に発生します。例えばController側ではGetMappingで定義しているのに、フロントエンドからPOSTメソッドでリクエストが送信された場合などに表示されます。Spring BootではREST APIを構築するケースが多いため、HTTPメソッドの設計はとても重要な要素になります。GET、POST、PUT、DELETEなどのメソッドの役割を理解し、フロントエンドとバックエンドで通信仕様を統一することで405エラーを防ぐことができます。

さらに415エラーは、送信されたデータ形式とSpring側が受け取れるデータ形式が一致していない場合に発生します。特にJSONデータを扱うREST API開発では頻繁に発生するエラーの一つです。Spring BootではJacksonライブラリによってJSONデータをJavaオブジェクトに自動変換しますが、RequestBodyアノテーションが付いていない場合やContentTypeが正しく設定されていない場合にはデータを受信することができません。そのためAPI開発ではJSON構造とJavaクラスの設計を一致させることが大切です。

またSpring Bootには標準のエラーハンドリング機能としてBasicErrorControllerが存在し、エラーが発生した場合には自動的にエラーページが表示されます。しかし実際のWebアプリケーションでは、ユーザーにとって分かりやすい独自エラーページを用意することが推奨されます。例えば404専用ページを作成し、トップページへのリンクや検索機能を設置することでユーザー体験を改善することができます。

Spring Bootでより高度なエラー処理を実装する場合にはControllerAdviceを利用した例外処理が有効です。ControllerAdviceを使用するとアプリケーション全体の例外を一括で管理できるため、ログ管理やエラーメッセージの統一を行うことができます。大規模なシステム開発ではこのような例外処理の設計がシステムの保守性や信頼性に大きく影響します。

さらにapplicationpropertiesの設定を変更することでSpring Bootのエラー処理の動作を細かく制御することも可能です。例えばNoHandlerFoundExceptionを有効化する設定を行うことで、存在しないURLへのアクセスを例外として処理できるようになります。このような設定を理解しておくことで、Spring Bootアプリケーションのエラーハンドリングをより柔軟に設計することができます。

Webアプリケーション開発ではエラーを完全になくすことは難しいですが、エラーの仕組みを理解しておくことで問題解決のスピードが大きく向上します。Spring BootのHTTPエラーの理解はJavaバックエンドエンジニアとして非常に重要な基礎知識です。URL設計、HTTPメソッド設計、JSON通信設計、例外処理設計を体系的に学ぶことで、より実践的で安定したWebアプリケーションを構築できるようになります。

サンプルプログラムで理解するSpringエラー対策

次にSpring Bootでエラーを防ぐための基本的なControllerのサンプルコードを確認してみましょう。URLマッピング、HTTPメソッド、JSON受信設定を正しく定義することで404エラー、405エラー、415エラーの多くを防ぐことができます。


@RestController
@RequestMapping("/api/users")
public class UserApiController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable Long id) {
        return "ユーザー情報取得";
    }

    @PostMapping(consumes = "application/json")
    public String createUser(@RequestBody UserRequest request) {
        return "ユーザー作成成功";
    }
}

このようにSpring BootではControllerのマッピング設定を明確にすることでURLエラーを防ぎ、HTTPメソッドを適切に指定することで通信エラーを回避できます。さらにJSON受信の設定を正しく行うことでデータ処理の問題を減らすことができます。


ユーザー情報取得
ユーザー作成成功

また独自のエラーページを用意することで、ユーザーがエラー画面に遭遇した場合でも分かりやすい案内を表示することができます。Spring Bootではテンプレートエンジンを利用してエラー画面を作成することが一般的です。


<!DOCTYPE html>
<html>
<head>
    <title>エラーページ</title>
</head>
<body>
    <h1>404ページ</h1>
    <p>指定されたページは存在しません。トップページから再度アクセスしてください。</p>
</body>
</html>

このようにSpring Bootのエラー処理を正しく理解することで、安定したWebアプリケーション開発を行うことができます。HTTPエラーの理解はREST API開発やバックエンド開発において非常に重要な知識であり、実務でも頻繁に役立つスキルです。

先生と生徒の振り返り会話

生徒

今日の学習でSpring Bootの404エラーや405エラー、415エラーの違いがかなり理解できました。エラーが出る理由が少しずつ見えてきました。

先生

それはとても良いですね。Spring BootのWebアプリケーションではHTTPエラーの理解が重要です。エラーの意味が分かれば原因を見つけやすくなります。

生徒

404エラーはURLが見つからないとき、405エラーはHTTPメソッドが違うとき、415エラーはデータ形式が合っていないときでしたよね。

先生

その通りです。さらにSpring BootではControllerのマッピング設定やJSON受信設定を正しく行うことで多くの問題を防ぐことができます。

生徒

エラーが出たときはURL設定、HTTPメソッド、JSON構造を順番に確認すると原因が見つかりやすいですね。

先生

その確認方法はとても良い習慣です。Spring Boot開発ではログ確認、URL確認、HTTPメソッド確認、JSON構造確認を順番にチェックすると多くの問題を解決できます。これからも実際にコードを書きながら理解を深めていきましょう。

カテゴリの一覧へ
新着記事
New1
Java
JavaのStreamのmaxを完全解説!初心者でもわかる最大値の取得方法
新規投稿
New2
JSP
JSPで改行やスペースを正しく表示する方法!HTMLとの連携ポイントも解説
更新記事
New3
Spring
SpringのJpaRepositoryとsaveAndFlushの使い方を完全ガイド!初心者でもわかるデータ操作
更新記事
New4
Spring
Springの@Autowiredアノテーションの使い方を完全ガイド!初心者でもわかる依存性注入
更新記事
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.8
Java&Spring記事人気No8
Java
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得