Встречается на собеседованиях • сегодня

В чем разница между синглтоном в Spring и синглтоном в Java

Синглтон в Java — это шаблон проектирования, гарантирующий единственный экземпляр класса в рамках ClassLoader. Реализуется через приватный конструктор, статическое поле и метод getInstance().

java
public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

В Spring синглтон — это scope бина по умолчанию. Контейнер создает один экземпляр на все приложение и управляет его жизненным циклом.

java
@Component
@Scope("singleton")
public class SpringSingleton { ... }

Ключевые отличия:

  1. Управление жизненным циклом: В Java — разработчик, в Spring — контейнер.
  2. Потокобезопасность: В Spring бины по умолчанию потокобезопасны (если не хранят состояние), в Java нужно синхронизировать вручную.
  3. Гибкость: Spring позволяет менять scope (prototype, request и т.д.), Java-синглтон жестко зафиксирован.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы