title: Spring Boot Rest - How to configure 404 - resource not found
body: <p>I got a working spring boot rest service. When the path is wrong it doesn't return anything. No response At all. At the same time it doesn't throw error either. Ideally I expected a 404 not found error.</p>
  
  <p>I got a GlobalErrorHandler</p>
  
  <pre><code>@ControllerAdvice
  public class GlobalErrorHandler extends ResponseEntityExceptionHandler {
  
  }
  </code></pre>
  
  <p>There is this method in ResponseEntityExceptionHandler </p>
  
  <pre><code>protected ResponseEntity&lt;Object&gt; handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers,
                                                       HttpStatus status, WebRequest request) {
  
      return handleExceptionInternal(ex, null, headers, status, request);
  }
  </code></pre>
  
  <p>I have marked <code>error.whitelabel.enabled=false</code> in my properties</p>
  
  <p>What else must I do for this service to throw a 404 not found response back to clients</p>
  
  <p>I referred a lot of threads and don't see this trouble faced by anybody.</p>
  
  <p>This is my main application class</p>
  
  <pre><code> @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&lt;Application&gt; 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;
      }
  }
  </code></pre>