Встречается на собеседованиях • сегодня
Можно ли создать несколько Singleton из одного класса в Spring
В Spring по умолчанию Singleton означает один бин на контейнер, но есть нюансы:
1. **Один бин на контейнер** - стандартное поведение:
```java
@Component
public class MySingleton { ... } // Только один экземпляр в ApplicationContext
```
2. **Разные контейнеры** - если создать несколько ApplicationContext, в каждом будет свой Singleton.
3. **Scope "prototype"** - создает новый экземпляр при каждом запросе:
```java
@Scope("prototype")
@Component
public class MyPrototype { ... }
```
4. **ThreadLocal** - можно имитировать "per-thread" Singleton:
```java
@Component
public class ThreadLocalSingleton {
private static final ThreadLocal instance =
ThreadLocal.withInitial(ThreadLocalSingleton::new);
public static ThreadLocalSingleton get() {
return instance.get();
}
}
```
Spring управляет жизненным циклом бинов, поэтому "настоящий" Singleton в Spring - это всегда один экземпляр в рамках одного ApplicationContext.

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