Сохранить флаг для запроса и использовать его позже для этого конкретного запроса? - PullRequest
0 голосов
/ 30 октября 2019

Как я могу установить флаг для того, поступает ли запрос с мобильного телефона или нет, чтобы я мог использовать этот флаг где угодно для этого конкретного запроса. У меня есть только доступ к HttpServletRequest при запуске, и я не хочу передавать его вызывающим методам?

1 Ответ

0 голосов
/ 30 октября 2019

Вы можете использовать объект Context, содержащий ThreadLocal , со статическими методами доступа, который хранит такую ​​информацию:

public class Context {
  private ThreadLocal<Map<String, String>> ctx = new ThreadLocal<>();

  // initialize it properly

  public static void set(String key, String value) {
    ctx.get().put(key, value);
  }

  public static String get(String key) {
    return ctx.get().get(key);
  }

}

@GetMapping(...)
public void handle(HttpServletrequest req) {
  String agent = determineAgent(req);
  Context.set("agent", agent);

}

Теперь вы можете получить доступ к Context из любого местав вашем коде через Context.get("agent").

ВАЖНО: Очистите ThreadLocal после каждый Запрос был обработан. Значения сохранятся, когда поток обработает другой запрос!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...