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, а контейнерът сам гарантира уникалността на екземпляра и управлението му.