Как насчет конфигурации вашего проекта?Интеграция между Spring и Jersey не работает "из коробки", поскольку жизненный цикл конечных точек ресурса Jersey не знает о создании и настройке экземпляров Spring-компонентов.
По умолчанию Jersey создает новый экземпляр ресурса конечной точки при каждом запросе без какой-либо интеграции с управлением жизненным циклом bean-компонента Spring и экземплярами с областью действия, поэтому Spring не будет обрабатывать аннотацию @Autowired
..
Вам необходимо настроить интеграцию и поддержку Spring в Джерси, и для этого вы можете добавить зависимости расширения Джерси Spring в конфигурацию вашего проекта.
Если вы используете Maven, для Джерси доВ версии 2.25 необходимо добавить следующую зависимость:
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.25</version>
</dependency>
Для версии 2.26 на Джерси или выше доступен артефакт jersey-spring4
.
Таким образом, конечные точки на Джерси будут управляться какSpring bean-компоненты, обеспечивающие внедрение зависимостей через аннотацию @Autowired
.
Также убедитесь, что конфигурация Spring (включая фазы инициализации контекста приложения и регистрации bean-компонентов) настроена правильно.
Я думаю, чтоЛучший способ решить эту проблему - использовать Spring BooТаким образом, и в Holon Platform , проекте Open Source, которым я управляю, мы предоставляем множество средств автоматической настройки для использования среды Spring с Jersey (например, автоматическая регистрация компонентов Spring JAX-RS в качестве ресурсов Jersey)., избавляясь от параметров конфигурации, таких как jersey.config.server.provider.packages
).
Вы можете проверить этот пример на GitHub , чтобы увидеть, как настроить сервер Джерси с интеграцией Spring, просто используя Spring Boot стартер .