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.
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le code suivant pour les anciennes versions de spring boot (0.5.x)
Plus récent printemps de démarrage versions (1.X.La LIBÉRATION) a quelques refontes autour de ServerProperties. Voir ci-dessous,
Ensuite définir un bean à injecter ServerProperies.
Exemple de projet publié dans git
Ok, j'ai parlé à bientôt - aucun de ces solutions font une différence.. d'autres idées?
Cette réponse est tout aussi correct que votre propre tentative (
ServerProperties
est unEmbeddedServletContainerCustomizer
), de sorte qu'il serait utile d'avoir plus d'informations (comme un projet complet).Projet engagé github.com/kamoor/spring-boot-sample
Est-ce de travailler pour le printemps boot 2 ??
OriginalL'auteur kamoor
Vous pouvez soit utiliser le Printemps de Démarrage du builtin erreur vue par la mise en œuvre d'une vue nommée
error
, ou de l'éteindre par la mise enerror.whitelabel.enabled=false
de la propriété et de mettre en œuvre votre propre. C'est expliqué plus dans les docs.OriginalL'auteur gerrytan