Ar yra galimybė sukurti du Singleton Spring'e?
sobes.tech AI
Atsakymas iš AI
Taip, galimybė egzistuoja, nors tai prieštarauja pagrindiniam Singleton (vieno egzemplioriaus) šablono tikslui. Spring tai pasiekiama naudojant šiuos mechanizmus:
-
Skirtingi Spring kontekstai: Jei turite du skirtingus Spring kontekstus (pavyzdžiui, monolitinėje programoje, padalintoje į modulius, kiekvienas su savo kontekstu, arba paskirstytoje sistemoje, kur kiekvienas paslaugų turi savo kontekstą), kiekvienas kontekstas gali turėti savo Singleton-bino egzempliorių.
-
Scope
prototype: Nors pagal nutylėjimąscopeSpring biuose yrasingleton, galite aiškiai nurodytiscope="prototype"tam tikram binui. Spring tada sukurs naują šio binio egzempliorių kiekvieno užklausos metu.// Spring konfigūracijos pavyzdys @Configuration public class AppConfig { @Bean @Scope("prototype") // Nurodome scope kaip prototype public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Bino pavyzdys public class MyPrototypeBean { // ... } -
Bibliotekų susiejimas su jų pačių kontekstais: Jei jūsų programa naudoja bibliotekas, kurios pačios inicijuoja savo kontekstus Spring ir registruoja juose Singleton-binus, tai jūsų pagrindinėje programoje ir šioje bibliotekoje gali būti po vieną to paties klasės egzempliorių, registruotą kaip Singleton kiekviename kontekste.
Svarbu suprasti, kad kelių egzempliorių kūrimas iš klasės, kuri buvo sukurta kaip Singleton, dažnai rodo potencialią architektūros problemą arba netinkamą šablono naudojimą. Paprastai, jei reikalingas daugiau nei vienas egzempliorius, Singleton scope yra netinkamas.