Sobes.tech
Junior — Middle

Как може да се реализира патърнът Singleton в съвременен контейнер за зависимости?

sobes.tech AI

Отговор от AI

В съвременните контейнери за зависимости (например, Spring, CDI) шаблонът Singleton се реализира чрез конфигурацията на контейнера, който управлява жизнения цикъл на обекта и гарантира, че ще бъде създаден само един екземпляр.

В Spring, например, биновете по подразбиране са синглтони. Достатъчно е да обявите бин:

@Component
public class MySingletonService {
    // логика
}

Контейнерът ще създаде един екземпляр на MySingletonService и ще го използва навсякъде, където е необходимо.

Ако бинът се създава ръчно, може да се посочи обхватът сингълтон:

@Bean
@Scope("singleton")
public MySingletonService mySingletonService() {
    return new MySingletonService();
}

По този начин регистрацията на сингълтон се свежда до обявяване на компонент с обхват singleton, а контейнерът сам гарантира уникалността на екземпляра и управлението му.