javadoc для ContextLoaderServlet говорит само за себя:
Обратите внимание, что этот класс устарел для контейнеров, реализующих Servlet API 2.4 или выше, в пользу ContextLoaderListener.
Очевидно, до Servlet API 2.4 порядок, в котором инициализируются прослушиватели и сервлеты, не определялся спецификацией.Таким образом, чтобы убедиться, что контекст Spring правильно загружен перед любыми другими сервлетами в Сервлете 2.3 и ниже, вам необходимо использовать ContextLoaderServlet и поместить его в качестве первого для загрузки при запуске.Проверьте эту ссылку для получения дополнительной информации.