Enterprise Java

New in JAX-RS 2.0 – @BeanParam annotation

JAX-RS is awesome to say the least and one of my favorites! Why?

  • Feature rich
  • Intuitive (hence the learning curve is not as steep)
  • Easy-to-use and develop with
  • Has great RIs – Jersey, RestEasy etc

There are enough JAX-RS fans out there who can add to this!

JAX-RS 2.0 is the latest version of the JSR 311 specification and it was released along with Java EE 7.
 

Life without @BeanParam

Before JAX-RS 2.0, in order to pass/inject information from an HTTP request into JAX-RS resource implementation methods, one could

  1. Include multiple method arguments annotated with @FormParam, @PathParam, @QueryParam etc
  2. 11

     

    1_1

     

  3. Or, have a model class backed by JAXB/JSON or a custom MessageBodyReader implementation for JAX-RS ProviderΒ to be able to unmarshall the HTTP message bodyΒ to a Java object – read more about thisΒ in one of my previous posts

 

21

 

33

 

This means that something like a HTML5 based client would need to extractΒ the FORMΒ input, convert it into JSON or XML payload and thenΒ POST it over the wire.

Simplification in JAX-RS 2.0

This process has been simplified by introduction ofΒ the @BeanParam annotation. It helps inject custom value/domain/model objects into fields or method parameters ofΒ JAX-RS resourceΒ classes.

In case you want to refer to the code (pretty simple) or download the example/run it yourself,Β here is the GitHub link

All we need to do is, annotate the fields of the model (POJO) class with the injection annotations that already exist i.e. @PathParam, @QueryParam, @HeaderParam, @MatrixParam etc – basically any of the @xxxParam metadata types and

41

 

Make sure that we include the @BeanParam annotation while injecting a reference variable of this POJO (only on METHOD, PARAMETER or FIELD).

5

 
JAX-RS provider automatically constructs and injects an instance of your domain object which you can now use within your methods.

Just fill in the form information and POST it!

 
6

 

7

 

That’s it. . . Short and Sweet!

Keep Coding!

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Oldest
Newest Most Voted
Riccardo
Riccardo
12 years ago

That’s cool, I’ve missed something like this in JAX-RS 1, so much!

Back to top button