Springде эки Singleton түзүү мүмкүнбү?
sobes.tech AI
AIден жооп
Ооба, мүмкүнчүлүк бар, бирок бул Singleton (бир гана үлгү) паттернин негизги максатынан каршы келет. Springде бул төмөнкү механизмдер аркылуу жеткиликтүү:
-
Төрт Spring контексттери: Эгерде сизде эки башка Spring контексттери болсо (мисалы, модулдарга бөлүнгөн монолиттик колдонмо, ар бири өзүнүн контекстине ээ же бөлүштүрүлгөн системада, анда ар бир кызмат өзүнүн контекстине ээ), ар бир контекст өзүнүн Singleton-биндин үлгүсүн камтышы мүмкүн.
-
Scope
prototype: Springдеги биндер үчүн scope по умолчаниюsingleton, бирок сиз аны такscope="prototype"деп көрсөтө аласыз. Spring андан кийин ар бир суроо боюнча жаңы үлгү түзөт.// Spring конфигурациясынын мисалы @Configuration public class AppConfig { @Bean @Scope("prototype") // `prototype` scope көрсөтүү public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Биндин мисалы public class MyPrototypeBean { // ... } -
Китепканалар менен байланыш, алардын өзүнүн контексттери бар: Эгер сиздин колдонмоңуз өзүнүн Spring контексттерин баштай турган жана ошол жерде Singleton-биндерди каттаган китепканаларды колдонсо, анда негизги колдонмоңузда жана ошол китепканада бир эле класстин үлгүсү болушу мүмкүн, ар бир контекстте Singleton катары катталган.
Маанилүү, Singleton катары ойлонулган класстин бир нече үлгүсүн түзүү көбүнесе архитектурада потенциалдуу көйгөйгө же паттерндин туура эмес колдонулушуна ишара кылат. Жалпысынан, эгер бир нече үлгү талап кылынса, singleton scope ылайыктуу эмес.