【发布时间】:2017-11-07 10:23:17
【问题描述】:
我正在使用 Spring Boot 1.5.7。
我有一个配置类DispatcherServletCustomConfiguration 和ServletRegistrationBean
ServletRegistrationBean registration = new ServletRegistrationBean(
dispatcherServlet(), "/api/*");
在项目中存在另一个带有注释 @ControllerAdvice 的类,带有 404 和错误处理程序。控制器建议不起作用。
如果我禁用 DispatcherServletCustomConfiguration 控制器建议正常工作。
你能帮我吗?再见。
更新:
控制器建议:
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
GenericResponse response = new GenericResponse();
response.getStatus().setCodice(EsitiMapping.NOT_FOUND.getEsito());
response.getStatus().setDescrizione(EsitiMapping.NOT_FOUND.getDescrizioneEsito());
response.getStatus().setCodice(EsitiMapping.NOT_FOUND.getCodice());
//log.error(ex.getMessage(), ex);
return handleExceptionInternal(ex, response, new HttpHeaders(), HttpStatus.NOT_FOUND, request);
}
@ExceptionHandler(value = { Exception.class })
protected ResponseEntity<Object> handleGenericError(RuntimeException ex, WebRequest request) {
GenericResponse response = new GenericResponse();
response.getStatus().setCodice(EsitiMapping.INTERNAL_ERROR.getEsito());
response.getStatus().setDescrizione(EsitiMapping.INTERNAL_ERROR.getDescrizioneEsito());
response.getStatus().setCodice(EsitiMapping.INTERNAL_ERROR.getCodice());
log.error(ex.getMessage(), ex);
return handleExceptionInternal(ex, response, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR, request);
}
}
Servlet 注册 Bean:
@Configuration
public class DispatcherServletCustomConfiguration {
@Bean
public DispatcherServlet dispatcherServlet() {
return new DispatcherServlet();
}
@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(
dispatcherServlet(), "/api/*");
registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
return registration;
}
}
【问题讨论】:
-
请粘贴您的完整配置。
-
@AtaurRahmanMunna 我更新了帖子。谢谢
-
你有没有扩展
WebApplicationInitializer的类?如果有,请粘贴该配置。 -
我有一个简单的@SpringBootApplication 应用程序类。
-
请用
@EnableWebMvc注释你的RestResponseEntityExceptionHandler类并让我知道状态。
标签: java spring spring-mvc servlets spring-boot