Внедрить Spring beans в RestEasy

Можно ли внедрить компоненты Spring в класс RestEasy @Path? Мне удалось сделать это с Джерси, с аннотацией @InjectParam, но по некоторым другим причинам мне нужно переключиться на RestEasy, и я не могу найти способ сделать это (пробовал старый добрый javax.inject.Inject, но ничего).

РЕДАКТИРОВАТЬ

Это решение работает: http://www.mkyong.com/webservices/jax-rs/resteasy-spring-integration-example/

но это не инъекция .. Я все же предпочел бы что-нибудь более элегантное.


person Robert Kovačević    schedule 25.01.2012    source источник


Ответы (4)


Просто аннотируйте свой класс RestEasy с помощью Spring @Component, а затем вставьте свои beans с помощью Spring @Autowired. Не забудьте включить элементы annotation-config и component-scan в конфигурацию Spring.

person Peter Cetinski    schedule 25.02.2012
comment
Пробовал с 3.0.4.Final, после ResteasyDoc просто не работает. Использование SpringBeanAutowiringSupport было единственным способом заставить его работать. - person tonio; 04.10.2013

Есть рабочий пример, который интегрирует RestEasy со Spring, просто попробуйте spring-resteasy.

person mendlik    schedule 05.11.2013

Вы можете использовать аннотацию @Configurable, чтобы сделать обычный класс (созданный new) Spring Bean. Затем вы можете использовать обычную аннотацию Spring для внедрения всего в этот класс / экземпляр, как в «нормальном» Spring Bean.

Но для этого требуется AspectJ!

@ См. справочную главу Spring 7.8.1 Использование AspectJ для внедрения зависимостей объектов домена с помощью Spring

person Ralph    schedule 25.01.2012

Я полностью согласен с ответом Питера, но есть другой способ сделать это: вы делаете все свои компоненты экспозиции (RESTEasy или JAX-WS, которые не являются компонентами Spring), расширяя SpringBeanAutowiringSupport.

Таким образом, вы можете легко внедрить свои Spring Services с помощью аннотации @Autowired в эти классы.

person рüффп    schedule 25.11.2012