Question

Is there a way to build Spring Web calls that consume and produce application/json formatted requests and responses respectively?

Maybe this isn't Spring MVC, I'm not sure. I'm looking for Spring libraries that behave in a similar fashion to Jersey/JSON. The best case would be if there was an annotation that I could add to the Controller classes that would turn them into JSON service calls.

A tutorial showing how to build Spring Web Services with JSON would be great.


EDIT: I'm looking for an annotation based approach (similar to Jersey).

EDIT2: Like Jersey, I am looking for REST support (POST,GET,DELETE,PUT).

EDIT3: Most preferably, this will be the pom.xml entries and some information on using the spring-js with jackson Spring native version of things.

Was it helpful?

Solution

In case other ppl get here later: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ was the most useful link for me. That finally made me understand the model (after less than a day of searching).

OTHER TIPS

You can certainly have controllers that return a View which is in JSON output. Take a look at the Spring-JSON project.

To consume requests in JSON I would assume you would just want a controller to pass a request parameter off to a JSON library which could parse the data?

There is no pre-packaged way to do what you want as Jersey is nicely integrated with Spring via the Jersey-Spring API so there's really no reason to re-invent the wheel.

Since spring-mvc 3.0 official support for Ajax remoting with JSON is provided as part of Spring MVC. This includes support for generating JSON responses and binding JSON requests using the Spring MVC @Controller programming model.

see here

This feature is now part of Spring since version 3.0. You can simply use the @ResponseBody annotation to specify that you want the return value from your request handler methods to be serialized to JSON and sent as the response body. See http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

It seems that DWR framework looks very close to what you want to get.

You can configure Spring MVC interceptors through handler mappings and then use the mappings to transform the returning data to JSON. The handler configuration can be done in xml (no need to recompile), and this can be completely transparent to the rest of the application.

It's fairly easy to annotate controllers with some annotation, and then hook up the BeanFactory bootstrap process to register the controllers within some handler mapping process.

I have used this approach to transform the result from spring controllers into GWT RPC calls.

You can also use Spring AOP to intercept controller method calls and unwrap/wrap the requests from/to JSON.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top