Spring Boot Rest - konfigurieren 404 - Ressource nicht gefunden
Bekam ich eine funktionierende spring boot rest-Dienst. Wenn der Pfad falsch ist es nicht, etwas zurückzugeben. Überhaupt keine Antwort. Zur gleichen Zeit, es nicht werfen Fehler entweder. Im Idealfall erwartete ich eine 404 nicht gefunden Fehler.
Bekam ich einen GlobalErrorHandler
@ControllerAdvice
public class GlobalErrorHandler extends ResponseEntityExceptionHandler {
}
Gibt es diese Methode in ResponseEntityExceptionHandler
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
return handleExceptionInternal(ex, null, headers, status, request);
}
Habe ich markiert error.whitelabel.enabled=false
meiner Eigenschaften
Was muss ich tun für diesen Dienst zu werfen, der eine 404-nicht gefunden-Antwort an clients
Genannten ich eine Menge threads und nicht sehen, diese Schwierigkeiten konfrontiert, von niemandem.
Dies ist meine Hauptanwendung-Klasse
@EnableAutoConfiguration //Sprint Boot Auto Configuration
@ComponentScan(basePackages = "com.xxxx")
@EnableJpaRepositories("com.xxxxxxxx") //To segregate MongoDB
//and JPA repositories.
//Otherwise not needed.
@EnableSwagger //auto generation of API docs
@SpringBootApplication
@EnableAspectJAutoProxy
@EnableConfigurationProperties
public class Application extends SpringBootServletInitializer {
private static Class<Application> appClass = Application.class;
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(appClass).properties(getProperties());
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public FilterRegistrationBean correlationHeaderFilter() {
FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
filterRegBean.setFilter(new CorrelationHeaderFilter());
filterRegBean.setUrlPatterns(Arrays.asList("/*"));
return filterRegBean;
}
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
static Properties getProperties() {
Properties props = new Properties();
props.put("spring.config.location", "classpath:/");
return props;
}
@Bean
public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
WebMvcConfigurerAdapter webMvcConfigurerAdapter = new WebMvcConfigurerAdapter() {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false).favorParameter(true).parameterName("media-type")
.ignoreAcceptHeader(false).useJaf(false).defaultContentType(MediaType.APPLICATION_JSON)
.mediaType("xml", MediaType.APPLICATION_XML).mediaType("json", MediaType.APPLICATION_JSON);
}
};
return webMvcConfigurerAdapter;
}
@Bean
public RequestMappingHandlerMapping defaultAnnotationHandlerMapping() {
RequestMappingHandlerMapping bean = new RequestMappingHandlerMapping();
bean.setUseSuffixPatternMatch(false);
return bean;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung ist ziemlich einfach:
Ersten Sie implementieren müssen, um den controller, um alle Fehler zu Fällen. Dieser controller muss
@ControllerAdvice
-- erforderlich zu definieren@ExceptionHandler
für alle@RequestMappings
.Bieten Ausnahme, die Sie überschreiben möchten Antwort in
@ExceptionHandler
.NoHandlerFoundException
ist eine Ausnahme, die generiert wird, wenn der Frühling nicht in der Lage sein zu delegieren Anfrage (404 Fälle). Sie können auch angebenThrowable
überschreiben Ausnahmen.Zweiten müssen Sie sagen, Spring zu werfen, Ausnahme im Falle von 404 (konnte nicht beheben, handler):
Ergebnis, wenn ich die Verwendung nicht definierter URL
spring.mvc.throw-exception-if-no-handler-found=true spring.resources.add-mappings=false
Nachdem ich entfernt das dispatcherServlet Konfiguration in main und verwendet die beiden oben genannten Eigenschaften in der Anwendung.Eigenschaften, Fehler wurden ordnungsgemäß weitergeleitet zu meinem ControllerAdvice. Hoffe, das hilft jemand!No converter found for return value of type: class co.x.model.ErrorResponse
können Sie mir helfen ?jackson-databind
ist in Ihre Abhängigkeiten und Ihre ErrorResponse und verschachtelte Klassen Getter und setter: stackoverflow.com/questions/32905917/... oder stackoverflow.com/questions/33832735/...