Избегать «Не найдено сопоставление для HTTP-запроса с URI» или контроллера перехвата - PullRequest
0 голосов
/ 15 января 2019

Каков наилучший способ избежать следующих предупреждений?

o.s.web.servlet.PageNotFound : No mapping found for HTTP request with URI [......]

Я попытался добавить универсальный контроллер следующим образом:

@Controller
class CatchAllController {
    @RequestMapping(value = "/**")
    public ResponseEntity<?> catchAll() {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

Но по какой-то причине статический контент (т.е. src/main/resources/static/) также перехватывается контроллером и поэтому недоступен.

С другой стороны, я не хочу, чтобы эти предупреждения появлялись в журналах, поскольку клиенты могут получить доступ к случайному URI, а я не хочу получать уведомления об этом.

1 Ответ

0 голосов
/ 15 января 2019

С другой стороны, я не хочу, чтобы эти предупреждения появлялись в журналах, поскольку клиенты могут получить доступ к случайному URI, и я не хочу получать уведомления об этом.

Затем просто отключите регистратор, который регистрирует эти предупреждения.

Начиная с Spring 5.1.4.RELEASE , они регистрируются из DispatcherServlet через этих членов

/** Log category to use when no mapped handler is found for a request. */
public static final String PAGE_NOT_FOUND_LOG_CATEGORY = "org.springframework.web.servlet.PageNotFound";

/** Additional logger to use when no mapped handler is found for a request. */
protected static final Log pageNotFoundLogger = LogFactory.getLog(PAGE_NOT_FOUND_LOG_CATEGORY);

С Logback вы бы объявили что-то вроде

<logger name="org.springframework.web.servlet.PageNotFound" level="ERROR">
   ...
</logger>

Аналогично, с log4j2 вы бы сделали

<Logger name="org.springframework.web.servlet.PageNotFound" level="ERROR">
   ...
</Logger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...