Sobes.tech
Middle

Оё имкон дорад, ки ду Singleton дар Spring эҷод кард?

sobes.tech AI

Ҷавоб аз AI

Бале, имконият мавҷуд аст, гарчанде ин ба ҳадафи асосии паттерни Singleton (як нусхаи ягона) зиддият дорад. Дар Spring, ин тавассути механизмҳои зерин ба даст меояд:

  1. Маҳз контекстҳои Spring гуногун: Агар шумо ду контексти Spring гуногун дошта бошед (масалан, дар барномаи монолитӣ, ки ба модулҳо тақсим шудааст, ҳар яке бо контексти худ, ё дар системаи тақсимшуда, ки ҳар хидмат контексти худро дорад), ҳар як контекст метавонад нусхаи худро аз Singleton-bean дошта бошад.

  2. Scope prototype: Гарчанде ки scope-и стандартии барои bean-ҳо дар Spring singleton аст, шумо метавонед explicitly scope="prototype"-ро барои bean муайян кунед. Spring пас аз ҳар дархост нусхаи навро аз он bean месозад.

    // Намунаи конфигуратсияи Spring
    @Configuration
    public class AppConfig {
    
        @Bean
        @Scope("prototype") // муайян кардани scope `prototype`
        public MyPrototypeBean myPrototypeBean() {
            return new MyPrototypeBean();
        }
    }
    
    // Намунаи bean
    public class MyPrototypeBean {
        // ...
    }
    
  3. Пайвастшавӣ бо китобхонаҳое, ки контекстҳои худро доранд: Агар барномаи шумо китобхонаҳоро истифода барад, ки контекстҳои худро оғоз мекунанд ва дар онҳо Singleton-bean-ҳоро сабт мекунанд, пас дар барномаи асосӣ ва дар ин китобхона метавонад як нусхаи ҳамон синф бошад, ки ҳамчун Singleton дар ҳар як контекст сабт шудааст.

Муҳим аст, ки фаҳмед, ки сохтани чанд нусхаи класие, ки ҳамчун Singleton тарҳрезӣ шудааст, аксар вақт ба мушкили эҳтимолӣ дар архитектура ё истифодаи нодуруст аз паттерн ишора мекунад. Одатан, агар бештар аз як нусха лозим бошад, scope-и Singleton мувофиқ нест.