Мне посчастливилось сегодня поговорить с консультантом по этому вопросу, он смог помочь мне разобраться в этом.
Итак, моя проблема в том, что Spring MVC устанавливал два отдельных контекста , один контекст приложения, определенный в applicationContext.xml, и один веб-контекст, определенный в dispatcher-servlet.xml.
Бины из одного контекста не могут общаться с бинами в другом контексте, поэтому, когда я инициализировал свой контекст персистентности внутри applicationContext.xml, я не мог получить к нему доступ в бинах, загруженных dispatcher-servlet.xml, т.е. моими контроллерами. *
Когда Netbeans автоматически генерировал базу для моего Spring MVC, он настраивал ее по умолчанию. В некоторых крупных веб-приложениях имеет смысл разделять веб-часть приложения в контексте, отличном от остальной логики (постоянство, бизнес-код и т. Д.). В моем случае, когда я пытаюсь автоматически внедрить моего менеджера сущностей непосредственно в мои контроллеры, это сработало против меня.
Чтобы исправить проблему, я переместил строку
<import resource="classpath:META-INF/persistence-context.xml"/>
Из applicationContext.xml в мой dispatcher-servlet.xml. Затем мои контроллеры были правильно добавлены с EntityManager из аннотации @PersistanceContext.