У меня есть микросервис Springboot, для которого я хочу улучшить возможности регистрации. Каждый раз, когда я отправляю эту услугу HTTP-запросу, есть кусочки информации, которые я хотел бы получить доступ во всем моем приложении. Например, если бы я отправил имя в теле запроса, я мог бы захотеть зарегистрировать это имя в нескольких разных классах приложения. Как я могу сделать это, не распространяя эти данные в каждом методе или классе? Я хотел бы иметь какую-то глобально доступную переменную, но, поскольку у этой службы есть несколько потоков, я не хочу возможности доступа к информации запроса другого потока, которую я хранил.
Примером тела запроса может быть что-то как это:
{
"name": "Silly Willy",
"birthday": "2020-02-02"
}
В моем приложении я хочу создать переменную для хранения этого имени. Я хочу, чтобы он был ориентирован на многопотоковое исполнение, специфицировал запрос c, но был доступен во всем моем приложении на время запроса. Нечто похожее на переменную stati c:
//In the class
public class Object {
private static final String name;
public Object(String name) {
Object.name = name;
}
public static String getName() {
return name;
}
}
//In controller
Object obj = new Object(request.getName());
Я знаю, что строка неизменна, а переменные stati c не являются поточно-ориентированными, но я не совсем уверен, что я ищу за. Кто-то предложил использовать bean-компоненты и установить область действия для запроса, но я не уверен, как это будет выглядеть, или если это возможно с помощью метода конструктора (при условии, что я собираюсь создать класс для хранения этих приложений доступными переменные в).
В идеале я хотел бы иметь возможность создать объект или создать экземпляр чего-либо в контроллере при поступлении запроса, чтобы я мог использовать этот объект для облегчения своей регистрации:
log.info("{}", obj.getName());