Желаемое поведение:
Существует приложение Spring Boot, в котором есть контроллер, на котором размещена конечная точка, которая будет получать данные (через вызов HTTP) через отдельную службу. Однако для этого потребуется передать токен Bearer из исходных заголовков в исходном запросе.
Текущая реализация:
A. Существует GenericFilter, который сохраняет заголовок «Authorization» в экземпляре компонента.
@Component
public class exampleFilter extends OncePerRequestFilter {
@Autowired
private POJO pojo;
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
FilterChain filterChain) throws ServletException, IOException {
pojo.setAuthorization(httpServletRequest.getHeader("Authorization"));
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
}
Проблема:
Поскольку значение Authorization хранится в компоненте, оно не является потокобезопасным.
По результатам онлайн-исследований, паттерн заключается в использовании переменной метода в методе класса "doGet ()" или "service ()" HTTPServlet; однако, это не сработало правильно для этой проблемы.
Является ли этот шаблон все еще правильным решением для этой проблемы? какие-либо предложения о том, что должно быть?
Заранее спасибо!