Printemps de Démarrage - page 404 personnalisée avec tomcat autonome

Je suis en cours d'exécution d'un Ressort de démarrage de l'application à l'intérieur d'un tomcat autonome instance, et je suis en train de remplacer les pages d'erreur. De ma compréhension, Spring fournit un filtre ErrorPageFilter qui me permet juste de configuration des pages d'erreur comme normal pour les Ressorts EmbeddedServletContainerCustomizer pour gérer ce cas exactement.

Donc, j'ai mon auto configuration/servlet initialiseur dans une même classe:

@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = [ GroovyTemplateAutoConfiguration, SecurityAutoConfiguration, ErrorMvcAutoConfiguration, JmxAutoConfiguration ] )
class Application extends SpringBootServletInitializer {

    @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
        application.sources( Application )
    }

(Je suis en utilisant la même classe pour l'autoconfiguration et servlet init, c'est pourquoi je viens de passer mon Application classe dans la méthode configure ()

Regardant le code source pour SpringBootServletInitializer il ressemble à la ErrorPageFilter classe est ajoutée par simple extension de cette classe ici. J'ai désactivé le ErrorMvcAutoConfiguration - mais encore une fois, en regardant le code source on dirait que c'est juste la configuration par défaut des pages d'erreur et pas vraiment de réglage de quoi que ce soit avec la ErrorPageFilter.

J'ai ensuite mon erreur fichier de config:

@Configuration
class ErrorConfiguration implements EmbeddedServletContainerCustomizer {

    @Override public void customize( ConfigurableEmbeddedServletContainer container ) {
        container.addErrorPages(new ErrorPage( HttpStatus.NOT_FOUND, "/errors/404" ))
    }

Cependant, si je viens de visiter une URL invalide, et je DispatcherServlet ne pouvez pas trouver un match, alors je viens d'obtenir matous /404.html - pas mon point de vue, lié à la "/errors/404" (j'ai ce chemin mappé à un thymeleaf vue du modèle, qui fonctionne très bien - si je naviguez vers /erreurs/404 il affiche ok)

Des idées pourquoi ma page d'erreur personnalisée ne fonctionne pas? retraçant les journaux, j'obtiens une ligne sur les ErrorPageFilter en cours de configuration et d'installation ok démarrage de l'application, mais alors aucune mention du filtre de faire quoi que ce soit quand une requête arrive.

L'exemple de la doc est avec EmbeddedServletContainerFactory. Voir: docs.printemps.io/spring-boot/docs/current/reference/htmlsingle/...
Génial - j'ai été la recherche de la documentation pour les jours, pas sûr de savoir comment j'ai raté ça! Ai-je mal compris le point de la ErrorPageFilter classe alors? Les commentaires dans le code source/javadoc vraiment le faire sonner comme l'unique but de cette classe est de permettre à des pages d'erreur personnalisées dans la version autonome de la GUERRE des déploiements?

OriginalL'auteur rhinds | 2014-12-09

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *