I got a working spring boot rest service. When the path is wrong, it returns nothing. No answer. At the same time, this does not produce an error. Ideally, I expected 404 not found error.
I got GlobalErrorHandler
@ControllerAdvice public class GlobalErrorHandler extends ResponseEntityExceptionHandler { }
There is this method in ResponseEntityExceptionHandler
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers, HttpStatus status, WebRequest request) { return handleExceptionInternal(ex, null, headers, status, request); }
I noted error.whitelabel.enabled=false in my properties
What else should I do for this service to send 404 not found answer to clients
I have referred to many topics and do not see anyone who could run into this problem.
This is my main application class.
@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; } }
java spring rest spring-boot spring-mvc
Shiva
source share