How to use Jersey 2 with Spring IoC container
Jersey 2.3 has now spring support:
https://jersey.github.io/documentation/latest/user-guide.html#spring
As stated in the documentation
The Spring extension module configuration is based on annotations
So you have to tell spring to scan your classpath, for example:
<context:component-scan base-package="my.package.to.resources">
and annotate your resource class with a spring annotation (I advise to use @Component, and then specify the jersey resource scopes @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(); }}
As of June 2013, Jersey 2.0 has no official Spring support. There are two options:
- Use third party code from here https://github.com/marko-asplund/jersey/tree/master/ext/jersey-spring
- Wait until HK2 spring bridge becomes stable and documented https://java.net/jira/browse/HK2-40
See also:
http://jersey.576304.n2.nabble.com/Spring-framework-support-for-Jersey-2-td7580673.html
EDIT: Jersey 2.3 has spring support now, see the answer by Fabio below