Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

New in JAX-RS 2.0 – @BeanParam Annotation

DZone's Guide to

New in JAX-RS 2.0 – @BeanParam Annotation

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

· Java Zone ·
Free Resource

Get the Edge with a Professional Java IDE. 30-day free trial.

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 – JerseyRestEasy 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

1

1_1

2. Or, have a model class backed by JAXB/JSON or a custom MessageBodyReaderimplementation 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

2

3

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

4

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 :-)

Get the Java IDE that understands code & makes developing enjoyable. Level up your code with IntelliJ IDEA. Download the free trial.

Topics:
java ,enterprise-integration ,jax

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}