Единственное, что здесь неуместно, это то, что вы использовали одинаковые файлы конфигурации контекста для корневого контекста веб-приложения и вашего контекста сервлета. Это почти наверняка будет плохой идеей и приведет к очень странному поведению. Это может быть причиной вашей проблемы.
ContextLoaderListener
настроен с contextConfigLocation
<context-param>
и создает и управляет корнем WebApplicationContext
.
ServletDispatcherServlet
настраивается с помощью contextConfigLocation
<init-param>
и создает сервлет WebApplicationContext
.
и управляет им.
Корень WebApplicationContext
является родительским для контекста приложения сервлета, то есть любые bean-компоненты в корне WebApplicationContext
видны этим bean-компонентам в сервлете WebApplicationContext
.
Ваш первый шаг должен состоять в том, чтобы отделить эти конфигурации. С правильными bean-компонентами в правильных местах (например, весь материал MVC должен идти в контексте сервлета). не делитесь определениями бина между двумя, это только запутает и / или сломает.