[JAVA] Lancer une exception et attraper lorsqu'il n'y a pas de gestionnaire correspondant au chemin au printemps

S'il n'y a aucun chemin correspondant au mappage de servlet dans spring-mvc, l'avertissement suivant apparaîtra dans le journal. Dans ce cas, lancez une exception côté ressort et attrapez-la. Cela gère 404 (en utilisant spring au lieu de web.xml).

[org.springframework.web.servlet.PageNotFound](default task-2) No mapping found for HTTP request with URI [/xxxx] in DispatcherServlet with name 'dispatcher'

environnement

code

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebMVCApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class<?>[] getRootConfigClasses() {
		Class<?>[] configurations = {AppConfiguration.class};
		return configurations;
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		Class<?>[] configs = {};
		return configs;
	}

	@Override
	protected String[] getServletMappings() {
		String[] mappings = {"/"};
		return mappings;
	}

	@Override
	protected DispatcherServlet createDispatcherServlet(WebApplicationContext servletAppContext) {
		DispatcherServlet dispatcherServlet = (DispatcherServlet)super.createDispatcherServlet(servletAppContext);
		dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
		return dispatcherServlet;
	}
}

En définissant setThrowExceptionIfNoHandlerFound sur true, une exception sera levée si le gestionnaire correspondant à la demande est introuvable.

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;

@RestControllerAdvice
public class NoHandlerFoundControllerAdvice {
    @ExceptionHandler(NoHandlerFoundException.class)
    public ResponseEntity<String> handleNoHandlerFoundException(NoHandlerFoundException ex) {
    	return new ResponseEntity<>("not found", HttpStatus.NOT_FOUND);
    }
}

Créez une classe qui affecte ControllerAdvice (ou ControllerAdvice) pour décrire la gestion des exceptions commune à plusieurs contrôleurs. Puisque spring a été défini précédemment pour lancer NoHandlerFoundException s'il n'y a pas de gestionnaire correspondant au chemin, spécifiez-le dans ExceptionHandler.

Source d'information

Recommended Posts

Lancer une exception et attraper lorsqu'il n'y a pas de gestionnaire correspondant au chemin au printemps
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
Lorsqu'il n'y a pas de sortie vers stdout dans le journal du docker
Valeur initiale lorsqu'il n'y a pas de propriété de l'objet de formulaire dans la requête Spring
Lors de la réaffectation à un argument dans une méthode Ruby puis en appelant `super` → Celui réaffecté est utilisé
N choses à garder à l'esprit lorsque vous lisez «Introduction au printemps» et «Introduction au printemps» à l'ère Reiwa
Comment résoudre le problème lorsque la valeur n'est pas envoyée lorsque le formulaire est désactivé dans les rails et envoyé
[Ruby] Penser quand il n'y a pas de récepteur devant la méthode (ça ressemble à)
[Rails] Que faire lorsque l'erreur Aucune base de données sélectionnée et Base de données inconnue apparaît dans db: migrate
Patch Monkey pour renvoyer l'heure actuelle lorsqu'une chaîne vide est spécifiée dans Time.parse de Ruby
Paramètres à effectuer lorsque HTML ou JSP est formaté dans Eclipse et que la mise en page devient décevante
Je veux rendre le cadre de la zone de texte rouge lorsqu'il y a une erreur de saisie
ProxyFactory est pratique lorsque vous souhaitez tester AOP avec Spring!
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
Créer une ArrayList qui vous permet de lancer et de récupérer les coordonnées d'un plan bidimensionnel
Résolution d'une erreur survenue lors de la tentative d'utilisation de Spark dans un environnement où Java 8 et Java 11 coexistent
Comment résoudre le problème que le bean n'est pas traité correctement lorsqu'il est imbriqué dans Spring Batch
Pourquoi s'arrête-t-il lorsque je débogue dans Eclipse et qu'il n'y a pas de points d'arrêt? Liens relatifs à
[Swift] Au contraire, il est significatif d'éviter var et de le déclarer avec let uniquement lorsqu'il y a une branche dans l'affectation de la valeur initiale.
[JavaScript] Comment afficher une alerte en cas d'omission du formulaire de saisie
catch (Exception e) ou catch (IOException e) n'est pas requis dans la syntaxe try-with-resources
Y a-t-il un ingénieur qui n'a pas validé la colonne Json dans Rails?
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Est-il possible de mettre la bibliothèque (aar) dans la bibliothèque Android (aar) et de l'utiliser?
Spring Autowired est écrit dans le constructeur
Possibilité lors du déploiement sur EC2 mais rien n'est affiché dans le journal des erreurs
Lorsque vous souhaitez notifier une erreur quelque part lors de l'utilisation de graphql-spring-boot avec Spring Boot
Résumé en essayant d'utiliser Solr en Java et en obtenant une erreur (Solr 6.x)
Comment définir quand "Le constructeur Empty () n'est pas visible" se produit dans junit
[Pas de virgule (,) dans l'adresse! ] Points à garder à l'esprit lors de la demande d'examen à Pearson VUE
Lors du changement du contrôleur de Spring Web MVC en kotlin, @Autowired Le composant spécifié n'est pas injecté et devient nul