REST Service Example with Jersey2 and Guice Dependency Injection
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tutorials
.gitignore
README.md
pom.xml

README.md

REST with Jersey2 and Guice

Bridge Jersey's HK2 to Guice Dependency Injection Framework

This project implements a RESTful Webservice using Jersey and Guice.

Jersey is a very popular Java toolkit that abstracts away the low level details of the client-server communication, while Guice is one of the most popular dependency injection frameworks.

Jersey uses its own depencency injection framework HK2. There is a bridge between Jersey and Guice, but it is not easy to elegantly configure REST endpoints that use Guice dependency injection. This is where this project comes in. It defines a RestServletModule, that allows you to configure your REST application in the same way as all the other parts within it. This RestServletModule adds a rest() and a packages() function to configure Jersey2. This pays off by giving us a clear and elegant application structure. A typical configuration would be:

public class MyServletContextListener extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new RestServletModule() {
            @Override
            protected void configureServlets() {
                bind(WelcomeTexter.class);
                bind(HelloWorldServlet.class).in(Scopes.SINGLETON);
                serve("/hello").with(HelloWorldServlet.class);
                
                rest("/app/*").packages("com.example.jerseyguice.app");
                
                bind(User.class);
                bind(UserDao.class).to(InMemoryUserDao.class);
                bind(InMemoryUserDatabase.class);
            }
        });
    }
}

The solution is made for the google app engine but it should work on any application server.

For details see my blog about RESTful Webservices with Jersey 2 and Guice. For more information about the design principles behind it see my other blogs.

The source code for the tutorials can be found in the tutorials subfolder.