Vai ir iespēja izveidot divus Singleton Spring?
sobes.tech AI
Atbilde no AI
Jā, iespēja pastāv, lai gan tas ir pretrunā ar galveno Singleton (viena eksemplāra) šablona mērķi. Spring to sasniedz ar šādiem mehānismiem:
-
Dažādi Spring konteksti: Ja jums ir divi dažādi Spring konteksti (piemēram, monolītiskā lietojumprogrammā, sadalītā modulī, katram ar savu kontekstu, vai sadalītā sistēmā, kur katrai pakalpojuma daļai ir savs konteksts), katrs konteksts var saturēt savu Singleton-bina eksemplāru.
-
Scope
prototype: Lai gan pēc noklusējumascopeSpring binā irsingleton, jūs varat skaidri norādītscope="prototype"konkrētam binam. Spring tad izveidos jaunu šī binā eksemplāru katru pieprasījuma brīdi.// Spring konfigurācijas piemērs @Configuration public class AppConfig { @Bean @Scope("prototype") // Norādām scope kā prototype public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Bina piemērs public class MyPrototypeBean { // ... } -
Bibliotēku sasaistīšana ar to pašu kontekstu: Ja jūsu lietojumprogramma izmanto bibliotēkas, kas pašas inicializē savus kontekstus Spring un reģistrē tajos Singleton-binus, tad jūsu galvenajā lietojumprogrammā un šajā bibliotēkā var būt pa viens tā paša klases eksemplāram, reģistrētam kā Singleton katrā kontekstā.
Svarīgi saprast, ka vairāku eksemplāru izveide no klases, kas iecerēta kā Singleton, bieži norāda uz potenciālu arhitektūras problēmu vai nepareizu šablona izmantošanu. Parasti, ja nepieciešams vairāk nekā viens eksemplārs, Singleton scope nav piemērots.