Da li postoji mogućnost da se kreiraju dva Singleton u Springu?
sobes.tech АИ
Одговор од АИ
Da, mogućnost postoji, iako to protivreči osnovnom cilju Singleton šablona (jedan primerak). U Spring-u, to se postiže sledećim mehanizmima:
-
Različiti Spring konteksti: Ako imate dva različita Spring konteksta (na primer, u monolitnoj aplikaciji podeljenoj na module, svaki sa svojim kontekstom, ili u distribuiranom sistemu gde svaki servis ima svoj kontekst), svaki kontekst može sadržavati svoj primerak Singleton beana.
-
Scope
prototype: Iako je podrazumevano da je scope za beane u Spring-usingleton, možete eksplicitno navestiscope="prototype"za određeni bean. Spring će tada kreirati novi primerak tog beana pri svakom zahtevu.// Primer konfiguracije Spring @Configuration public class AppConfig { @Bean @Scope("prototype") // Navodimo scope `prototype` public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Primer beana public class MyPrototypeBean { // ... } -
Povezivanje sa bibliotekama koje imaju svoje kontekste: Ako vaša aplikacija koristi biblioteke koje same inicijalizuju svoje kontekste Spring i registruju u njima Singleton-beanove, onda u vašoj glavnoj aplikaciji i u toj biblioteci može postojati po jedan primerak iste klase, registrovan kao Singleton u svakom od konteksta.
Važno je razumeti da kreiranje više primeraka klase, koja je zamišljena kao Singleton, često ukazuje na potencijalni problem u arhitekturi ili pogrešnu upotrebu šablona. Obično, ako je potrebno više od jednog primerka, scope Singleton nije odgovarajući.