Spring und JAX-RS

Dieser Artikel erläutert, wie man das Spring Framework zusammen mit dem JAX-RS-Provider Jersey einsetzen kann. Das Ziel soll sein, dass die Rest-Resourcen automatisch instantitiert werden und die benötigten Abhängigkeiten über Spring injiziert werden.

Dazu muss zuerst in der web.xml das Spring-Framework durch die Angabe zweier Listener und durch Festlegung der Spring-Konfigurationsdatei initialisiert werden. Außerdem muss ein spezielles SpringServlet eingebunden werden, dass die Rest-Anfragen an Jersey weiterleitet. Dieses Servlet liefert Jersey im Paket jersey-spring mit.





contextConfigLocation
/WEB-INF/applicationContext.xml
    


           org.springframework.web.context.ContextLoaderListener
        
    


  org.springframework.web.context.request.RequestContextListener
        
    
    
        Jersey Spring Web Application
        
           com.sun.jersey.spi.spring.container.servlet.SpringServlet
        
    
    
        Jersey Spring Web Application
        /*
    


In der Spring-Konfigurationsdatei ist nur ein Eintrag nötig. Mittels Component-Scan werden alle Rest-Resourcen gefunden, die mit der Annotation @Component markiert sind. Danach werden alle Beans definiert, die in die Rest-Resourcen-Klassen injiziert werden sollen (im Beispiel: testObject).




    

    


Nachfolgend wir eine Rest-Resourcen-Klasse erstellt. Wie bereits erwähnt, muss diese mit der Annotation @Component ausgezeichnet werden, um vom Spring-Framework gefunden zu werden. Damit nicht bei jeder Anfrage ein neues Objekt erzeugt wird, wird der Scope auf Singleton gesetzt. Mit Hilfe der Annotation Path wird festgelegt unter welchen Pfad die Resource zu erreichen ist.

Schließlich wird eine Instanz von TestObject über die Annotation @Resource angefragt, die dann von Spring automatisch injiziert wird.


@Component
@Path("hello")
@Scope("singleton")
public class HelloWorld {

    @Resource
    private TestObject testObject;

    @GET
    public String sayHello( @QueryParam("name")String name){
           return testObject.sayHello(name);
    }

}

Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Y!GG
  • Webnews
  • Bloglines
  • blogmarks
  • Blogosphere News
  • De.lirio.us
  • email
  • MySpace
  • Technorati

Kommentieren

Spam protection by WP Captcha-Free