API JAX-RS из экосистемы технологий Java EE предоставляет аннотацию @Context
для внедрения 12 экземпляров объектов, связанных с контекстом HTTP-запросов.Он ведет себя так же, как аннотации @Inject
и @Autowired
в Java EE и Spring соответственно.
Можно добавить следующие экземпляры объекта:
SecurityContext
-Экземпляр контекста безопасности для текущего HTTP-запроса Request
- Используется для настройки обработки запроса предварительных условий Application
, Configuration
и Providers - Предоставляет доступ к приложению JAX-RS,конфигурация и экземпляры поставщиков ResourceContext
- экземпляры класса контекста ресурса ServletConfig
- экземпляр экземпляра ServletConfig ServletContext
- экземпляр ServletContext HttpServletRequest
- экземпляр HttpServletRequest для текущего запроса HttpServletResponse
- экземпляр HttpServletResponse для текущего запроса HttpHeaders
- поддерживает ключи и значения заголовков HTTP UriInfo
- Запрос параметров и переменных пути из URI с именем
А вот пример внедрения в поле экземпляров:
@Path("/")
public class EndpointResource {
@Context
private HttpHeaders httpHeaders;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getHeaders(){
// Code here that uses httpHeaders
}
}
Читайте о внедрении, есть причина, по которой вы не можете вводить статические поля.Рекомендуется избегать внедрения зависимостей в статические поля и методы, поскольку оно имеет следующие ограничения и может быть сложным для отладки.
- Статические поля будут внедрены после того, как первый объект класса был создан с помощьюDI, что означает отсутствие доступа к статическому полю в конструкторе
- Статические поля не могут быть помечены как окончательные, в противном случае компилятор или приложение жалуются на них во время выполнения
- Вызываются только статические методыодин раз после того, как был создан первый экземпляр класса