Kas Springis on võimalik luua kaks Singletoni?
sobes.tech AI
Vastus AI-lt
Jah, võimalus eksisteerib, kuigi see on vastuolus Singleton (ühe eksemplari) mustri põhieesmärgiga. Spring saavutatakse see järgmiste mehhanismide abil:
-
Erinevad Spring kontekstid: Kui teil on kaks erinevat Spring konteksti (näiteks monoliitilises rakenduses, mis on jagatud mooduliteks, igaüks oma kontekstiga, või hajutatud süsteemis, kus iga teenus omab oma konteksti), siis iga kontekst võib sisaldada oma Singleton-beani eksemplari.
-
Scope
prototype: Kuigi vaikimisi onscopeSpringi bean'idelsingleton, saate selgelt määratascope="prototype"konkreetsele bean'ile. Spring loob siis iga päringu korral selle beani uue eksemplari.// Spring konfiguratsiooni näide @Configuration public class AppConfig { @Bean @Scope("prototype") // Määrame scope'iks prototype public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Beani näide public class MyPrototypeBean { // ... } -
Raamatukogudega sidumine nende enda kontekstidega: Kui teie rakendus kasutab raamatukogusid, mis ise initsieerivad oma kontekstid Springis ja registreerivad neis Singleton-beane, siis teie peamises rakenduses ja selles raamatukogus võib olla üks eksemplar sama klassi, registreeritud kui Singleton igas kontekstis.
Oluline on mõista, et mitme eksemplari loomine klassist, mis on mõeldud Singletonina, viitab sageli potentsiaalsele arhitektuuriprobleemile või valed kasutusviisidele mustri. Tavaliselt, kui on vaja rohkem kui ühte eksemplari, ei sobi Singleton scope.