Sobes.tech
Middle

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:

  1. 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.

  2. Scope prototype: Kuigi vaikimisi on scope Springi bean'idel singleton, saate selgelt määrata scope="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 {
        // ...
    }
    
  3. 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.