Встречается на 2% собеседований по Java
Как организовать доступ к общим данным в эндпоинте на Spring, чтобы они были разделяемыми между всеми клиентами и потоками
Для разделяемых данных между всеми клиентами и потоками в Spring можно использовать:
- Singleton бины - Spring по умолчанию создаёт бины как синглтоны, их состояние будет общим для всех запросов:
java
@Service
public class SharedDataService {
private Map<String, Object> sharedData = new ConcurrentHashMap<>();
public void putData(String key, Object value) {
sharedData.put(key, value);
}
public Object getData(String key) {
return sharedData.get(key);
}
}- Статические поля - но нужно обеспечить потокобезопасность:
java
public class SharedData {
private static final ConcurrentMap<String, Object> DATA = new ConcurrentHashMap<>();
public static void put(String key, Object value) {
DATA.put(key, value);
}
}- Кеширование через Spring Cache:
java
@Cacheable("sharedData")
public Object getSharedData(String key) {
return fetchDataFromSlowSource(key);
}Важно:
- Используйте потокобезопасные коллекции (ConcurrentHashMap, CopyOnWriteArrayList)
- Для изменяемых данных синхронизируйте доступ
- Рассмотрите распределённые решения (Redis, Hazelcast) для кластера

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы