SpringBoot2.0实现自定义404页面渲染

注意: 1、404.html一定要建在template/static下面,否则无效。 2、new ErrorPage可以重定向具体的html也可以重定向请求地址,如/404,那就需要添加/404的Controller 1、第一种写法:实现ErrorPageRegistrar @Configuration public class ErrorConfigurar implements ErrorPageRegistrar { @Override public void registerErrorPages(ErrorPageRegistry registry) { ErrorPage[] errorPages = new ErrorPage[2]; errorPages[0] = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); errorPages[1] = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html"); registry.addErrorPages(errorPages); } } 第二种写法:SpringBoot2.0之前的写法 @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer() { @Override public void customize(ConfigurableEmbeddedServletContainer container) { ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "404.html"); container.addErrorPages(errorPage404); } }; } 第三种:SpringBoot2.0之后的写法 @Configuration public class ErrorPageConfig { /** * SpringBoot2.0以上版本WebServerFactoryCustomizer代替之前版本的EmbeddedWebServerFactoryCustomizerAutoConfiguration * * @return */ //@Bean必须加上 @Bean public WebServerFactoryCustomizer webServerFactoryCustomizer() { // //第一种:java7 常规写法 // return new WebServerFactoryCustomizer() { // @Override // public void customize(ConfigurableWebServerFactory factory) { // ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); // factory.addErrorPages(errorPage404); // } // }; //第二种写法:java8 lambda写法 return (factory -> { ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); factory.addErrorPages(errorPage404); }); } }