protected void registerParamAnnotations() {
    {
      registerParameterAnnotation(
          PathParam.class,
          (param, data, paramIndex) -> {
            final String name = param.value();
            checkState(
                emptyToNull(name) != null,
                "PathParam.value() was empty on parameter %s",
                paramIndex);
            nameParam(data, name, paramIndex);
          });
      registerParameterAnnotation(
          QueryParam.class,
          (param, data, paramIndex) -> {
            final String name = param.value();
            checkState(
                emptyToNull(name) != null,
                "QueryParam.value() was empty on parameter %s",
                paramIndex);
            final String query = addTemplatedParam(name);
            data.template().query(name, query);
            nameParam(data, name, paramIndex);
          });
      registerParameterAnnotation(
          HeaderParam.class,
          (param, data, paramIndex) -> {
            final String name = param.value();
            checkState(
                emptyToNull(name) != null,
                "HeaderParam.value() was empty on parameter %s",
                paramIndex);
            final String header = addTemplatedParam(name);
            data.template().header(name, header);
            nameParam(data, name, paramIndex);
          });
      registerParameterAnnotation(
          FormParam.class,
          (param, data, paramIndex) -> {
            final String name = param.value();
            checkState(
                emptyToNull(name) != null,
                "FormParam.value() was empty on parameter %s",
                paramIndex);
            data.formParams().add(name);
            nameParam(data, name, paramIndex);
          });
    }
  }
Please refer to the <a href="https://github.com/Netflix/feign/tree/master/feign-jaxrs">Feign
JAX-RS README</a>.
jaxrs/src/main/java/feign/jaxrs/JAXRSContract.java