Подтвердить что ты не робот

Как использовать Джерси 2 с контейнером Spring IoC

Каков наилучший способ включить инъекцию spring beans в Jersey 2? Джерси, кажется, не поддерживает это изначально.

Что необходимо для соединения двух фреймворков? В pom.xml и web.xml?

4b9b3361

Ответ 1

Вы должны уметь комментировать детали джерси, а затем использовать аннотации для ввода beans.

@Service //(or @Component)
public class MyJerseyService {

    @Autowired
    private MyObj mySpringBean

}

Ответ 2

Джерси 2.3 теперь поддерживает spring:

https://jersey.github.io/documentation/latest/user-guide.html#spring

Как указано в документации

Конфигурация модуля расширения spring основана на аннотации

Итак, вы должны сказать spring сканировать свой путь к классам, например:

<context:component-scan base-package="my.package.to.resources">

и аннотировать свой класс ресурсов аннотацией spring (советую использовать @Component, а затем указать области ресурсов трикотажа @Singleton/@PerLookup/@RequestScoped)

@Component
@Singleton
@Path("example")
public class Example {

    //Spring beans can't be injected directly into JAX-RS classes by using Spring XML configuration
    @Autowired
    private MyOtherBean myOtherBean;

    @GET @Path("hello")
    public String hello() {
        return myOtherBean.hello();
    }
}

Ответ 3

По состоянию на июнь 2013 года Джерси 2.0 не имеет официальной поддержки Spring. Существует два варианта:

См. также:

http://jersey.576304.n2.nabble.com/Spring-framework-support-for-Jersey-2-td7580673.html

EDIT: у Джерси 2.3 есть поддержка Spring, см. ответ Фабио ниже