Annotation inheritance

 

Annotation inheritance

JAX-RS annotations defined in a class or interface method are inherited by the corresponding subclass or implementation class method, provided that the method and its parameters do not define their own annotations. Let's familiarize ourselves with this with a simple example; the IEmployeeService interface defines REST API functions with the annotations required for EmployeeService to implement:


public interface IEmployeeService {

@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public Employee findEmployee(@PathParam("id") Short id);

@GET
@Path("{age}")
@Produces(MediaType.APPLICATION_JSON)
public List<Employee> findEmployeesByAge(@PathParam("age") Short age);
}

public class EmployeeService implements IEmployeeService{
public Employee findEmployee(Short id) {
//....
}

@Produces(MediaType.TEXT_XML)
public List<Employee> findEmployeesByAge(Short age) {
//....
}
}

The EmployeeService findEmployee method inherits the annotations from the IEmployeeServiceinterface. Conversely, the findEmployeesByAge method does not inherit the annotations from the IEmployeeService interface, as it has overridden its own annotation.

Class or interface annotations inheritance are not supported; only annotations used on the method and method parameters can be inherited.





























Comments

Popular posts from this blog

Understanding the JAX-RS resource life cycle

Generating a chunked output using Jersey APIs