Одиночка

Одиночка

Нашла целых 5 способов реализовать паттерн Одиночка: один средствами котлина и четыре - средствами спринга. Котлиновская реализация кстати сразу идет с ленивой инициализацией. Как лучше в реальных проектах делать пока не пойму, если кто знает - дайте знать. По сути - одно и то же, разве что котлиновская не управляется спрингом (и при этом она короче остальных)

object KotlinSingleton { fun doSomething() = "Hello from KotlinSingleton" init { println("init KotlinSingleton") } } @Component @Scope("singleton") @Lazy class SpringLazySingleton { fun doSomething() ="Hello from SpringLazySingleton" init { println("init SpringLazySingleton") } } @Component @Scope("singleton") class SpringSingleton { fun doSomething() = "Hello from SpringSingleton" init { println("init SpringSingleton") } } @Configuration class SingletonConfig { @Bean fun springSingletonBean() = SpringSingletonBean() @Bean @Lazy fun springSingletonLazyBean() = SpringSingletonLazyBean() } class SpringSingletonBean { fun doSomething() = "Hello from SpringSingletonBean" init { println("init SpringSingletonBean") } } class SpringSingletonLazyBean { fun doSomething() = "Hello from SpringSingletonLazyBean" init { println("init SpringSingletonLazyBean") } } @RestController class MyController ( val springSingletonBean: SpringSingletonBean, val springSingleton: SpringSingleton, val springSingletonLazyBean: ObjectProvider<SpringSingletonLazyBean>, val springLazySingleton: ObjectProvider<SpringLazySingleton>, ) { @GetMapping fun call() = listOf( springSingletonLazyBean.getObject().doSomething(), springLazySingleton.getObject().doSomething(), springSingletonBean.doSomething(), springSingleton.doSomething(), KotlinSingleton.doSomething(), ) }
5
1
5 комментариев

Ииии зачем ?

А чем еще в такое время заниматься? Не спать же

2

Здесь что-то на эльфийском

1