Lehetőség van két Singleton létrehozására Springben?
sobes.tech MI
Válasz az MI-től
Igen, a lehetőség fennáll, bár ez ellentmond a Singleton mintázat (egyetlen példány) fő céljának. A Springben ez a következő mechanizmusokon keresztül érhető el:
-
Különböző Spring kontextusok: Ha két különböző Spring kontextusod van (például egy monolitikus alkalmazásban, modulokra bontva, mindegyik saját kontextussal, vagy elosztott rendszerben, ahol minden szolgáltatásnak saját kontextusa van), akkor minden kontextus tartalmazhat saját Singleton-béla példányt.
-
prototypescope: Bár alapértelmezés szerint a Springben a beanek scope-jasingleton, kifejezetten megadhatod ascope="prototype"értéket egy adott bean esetében. Ekkor a Spring minden kérésnél új példányt hoz létre.// Spring konfigurációs példa @Configuration public class AppConfig { @Bean @Scope("prototype") // A scope `prototype` megadása public MyPrototypeBean myPrototypeBean() { return new MyPrototypeBean(); } } // Bean példa public class MyPrototypeBean { // ... } -
Könyvtárak saját kontextusai: Ha az alkalmazásod olyan könyvtárakat használ, amelyek saját Spring kontextusokat inicializálnak és ezekben Singleton-beanokat regisztrálnak, akkor a fő alkalmazásban és ebben a könyvtárban is lehet egy példány ugyanabból a osztályból, mindegyik kontextusban Singleton-ként regisztrálva.
Fontos megérteni, hogy az olyan osztály több példányának létrehozása, amelyet Singleton-ként terveztek, gyakran egy potenciális problémára utal az architektúrában vagy a minta helytelen használatára. Általában, ha több példányra van szükség, a Singleton scope nem megfelelő.