Spring Boot - benutzerdefinierte 404-Seite mit standalone-tomcat
Ich arbeite mit einer Spring-boot-Anwendung innerhalb eines eigenständigen tomcat-Instanz, und ich bin versucht, überschreiben Sie die Fehler-Seiten. Von meinem Verständnis, Frühling bietet einen filter ErrorPageFilter, die mir erlaubt, einfach nur setup Fehler-Seiten als normale Federn EmbeddedServletContainerCustomizer
in diesem Fall behandeln genau.
Also ich habe meine standard-auto-Konfiguration/servlet Initialisierung in einer Klasse:
@Configuration
@ComponentScan
@EnableAutoConfiguration(exclude = [ GroovyTemplateAutoConfiguration, SecurityAutoConfiguration, ErrorMvcAutoConfiguration, JmxAutoConfiguration ] )
class Application extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) {
application.sources( Application )
}
(Ich bin mit der gleichen Klasse für die Autokonfiguration und servlet-init, das ist der Grund, warum ich gerade an meinem Application
Klasse in der configure-Methode)
Sich den Quellcode für SpringBootServletInitializer es sieht aus wie die ErrorPageFilter
Klasse Hinzugefügt wird, indem nur die Erweiterung, dass Klasse hier. Ich schaltete das ErrorMvcAutoConfiguration
- aber auch hier an, dass der source-code sieht es aus wie, dass ist nur die Einstellung Standard-Fehler-Seiten und nicht wirklich die Einstellung nichts mit der ErrorPageFilter
.
Dann habe ich meinen Fehler config file:
@Configuration
class ErrorConfiguration implements EmbeddedServletContainerCustomizer {
@Override public void customize( ConfigurableEmbeddedServletContainer container ) {
container.addErrorPages(new ErrorPage( HttpStatus.NOT_FOUND, "/errors/404" ))
}
Allerdings, wenn ich besuchen Sie eine ungültige URL, und ich DispatcherServlet
nicht finden können, ein match dann bekomme ich nur Kater /404.html - nicht meine Ansicht verbunden "/errors/404
" (ich habe diesen Pfad zugeordnet, thymeleaf view-template, das funktioniert - wenn ich navigieren Sie zu " /errors/404 es zeigt ok an)
Irgendwelche Ideen, warum meine eigene Fehler-Seite nicht funktioniert? tracing-Protokolle, bekomme ich eine Linie über die ErrorPageFilter
konfiguriert und die setup ok beim starten der Anwendung, dann aber keine Erwähnung der filter etwas zu tun, wenn eine Anfrage kommt.
- Das Beispiel in der Dokumentation ist mit
EmbeddedServletContainerFactory
. Siehe: docs.Frühling.io/spring-boot/docs/current/Referenz/htmlsingle/... - Genial - ich habe die Suche die Dokumentation für Tage, nicht sicher, wie ich verpasst,! Habe ich das falsch verstanden den Punkt der ErrorPageFilter Klasse dann? Die Kommentare in den Quellcode/javadoc wirklich machen es klingen wie der alleinige Zweck dieser Klasse ist es, benutzerdefinierte Fehlerseiten im standalone-KRIEG-Bereitstellungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzen Sie folgenden code für ältere Versionen von spring boot (0.5.x)
Neuere spring-boot-Versionen (1.X.VERSION) hat einige refactoring um ServerProperties. Siehe unten,
Definieren Sie dann eine bean zu injizieren ServerProperies.
Sample project posted in git
ServerProperties
ist einEmbeddedServletContainerCustomizer
), so wäre es nützlich, mehr Informationen (z.B. ein komplettes Projekt).Können Sie entweder Spring Boot ein builtin-Fehler anzeigen, indem die Umsetzung einer Ansicht mit dem Namen
error
oder schalten Sie es aus, indem Sie die Einstellungerror.whitelabel.enabled=false
Eigenschaft und setzen Sie Ihre eigene. Es ist Erläuterungen zu den docs.