Вы можете использовать объект 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 после каждый Запрос был обработан. Значения сохранятся, когда поток обработает другой запрос!