Existuje možnosť vytvoriť dva Singleton v Spring?
sobes.tech AI
Odpoveď od AI
Áno, možnosť existuje, hoci to odporuje hlavnému cieľu vzoru Singleton (jeden exemplár). V Springu je to dosiahnute prostredníctvom nasledujúcich mechanizmov:
-
Rôzne kontexty Spring: Ak máte dva rôzne kontexty Spring (napríklad v monolitickej aplikácii rozdelenej na moduly, každý s vlastným kontextom, alebo v distribuovanom systéme, kde každý servis má svoj vlastný kontext), každý kontext môže obsahovať vlastný exemplár Singleton-bean.
-
Scope
prototype: Hoci je predvolene scope pre beany v Springusingleton, môžete explicitne určiťscope="prototype"pre konkrétny bean. Spring potom vytvorí nový exemplár tohto beana pri každom požiadavke.// Príklad konfigurácie Spring @Configuration public class AppConfig { @Bean @Scope("prototype") // Určenie scope `prototype` public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Príklad beana public class MyPrototypeBean { // ... } -
Prepojenie s knižnicami, ktoré majú vlastné kontexty: Ak vaša aplikácia používa knižnice, ktoré samy inicializujú vlastné kontexty Spring a registrujú v nich Singleton-beany, potom vo vašej hlavnej aplikácii a v tejto knižnici môže byť po jednom exemplári tej istej triedy, zaregistrovanom ako Singleton v každom z kontextov.
Je dôležité pochopiť, že vytváranie viacerých exemplárov triedy, ktorá bola navrhnutá ako Singleton, často naznačuje potenciálny problém v architektúre alebo nesprávne použitie vzoru. Zvyčajne, ak je potrebných viac ako jeden exemplár, scope singleton nie je vhodný.